Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.09.2011, 10:10
Новичок на форуме
Отправить личное сообщение для fr0st1k Посмотреть профиль Найти все сообщения от fr0st1k
 
Регистрация: 25.08.2011
Сообщений: 7

Установка курсора в div с contentEditable=true
Здраствуйте. Подскажите, пожалуйста, каким образом можно установить курсор мыши в конец текста div'а с contentEditable=true.
Ответить с цитированием
  #2 (permalink)  
Старый 10.01.2012, 16:48
Аватар для GuardCat
Просто любитель
Отправить личное сообщение для GuardCat Посмотреть профиль Найти все сообщения от GuardCat
 
Регистрация: 13.09.2011
Сообщений: 300

Апну. Есть способы это сделать?
Ответить с цитированием
  #3 (permalink)  
Старый 10.01.2012, 17:47
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Range, не?
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #4 (permalink)  
Старый 11.01.2012, 11:34
Профессор
Отправить личное сообщение для da_ff Посмотреть профиль Найти все сообщения от da_ff
 
Регистрация: 12.05.2009
Сообщений: 317

Поищите на форуме, кучу раз вопрос поднимали.
Ответить с цитированием
  #5 (permalink)  
Старый 11.01.2012, 11:51
Аватар для GuardCat
Просто любитель
Отправить личное сообщение для GuardCat Посмотреть профиль Найти все сообщения от GuardCat
 
Регистрация: 13.09.2011
Сообщений: 300

Nekromancer, ни разу не сталкивался (самообучение любителя вещь непредсказуемая), спасибо.

Почитал и попробовал использовать, но пока безуспешно. В примере, при нажатии в div клавиши влево, курсор должен устанавливаться в определённое место. Функция вызывается, ошибок нет. эффекта нет. Подскажете где ошибся?
<!DOCTYPE HTML>
<html>
<body>   
  <div contenteditable onkeyup = "test.call(this)">0123456789</div>
  <script>
    function test(e) {
      e = e || event;
      var range = document.createRange()
      if (e.keyCode == 37) {
        range.setStart(this.childNodes[0]/* Это же textNode? */, 2);
        range.setEnd(this.childNodes[0], 2);
      }
    }
  </script>
</body>
</html>

Похоже, выделяется текст успешно, можно его получить как range.toString(), но курсор положения не меняет (chrome 16).

Последний раз редактировалось GuardCat, 11.01.2012 в 12:10.
Ответить с цитированием
  #6 (permalink)  
Старый 11.01.2012, 14:45
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

GuardCat, вы правильно сделали range-объект, но неправильно ставите курсор) Точнее, совсем его не ставите. А ещё у вас ошибка с передачей event - вы его не передаёте) Вот это может вам помочь:

<!DOCTYPE HTML>
<html>
<body>  
  <div contenteditable onkeyup = "test.call(this, event)">0123456789</div>
  <script>
    function test(e) {
      var range = document.createRange()
      if (e.keyCode == 37) {
        range.setStart(this.childNodes[0]/* Это же textNode? */, 2);
        range.collapse(true);// совмещаем конец и начало в стартовой позиции
        var sel= window.getSelection();
        sel.removeAllRanges();
        sel.addRange(range);
      };
    };
  </script>
</body>
</html>


Но данный код - не для IE. Читайте статью.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #7 (permalink)  
Старый 11.01.2012, 16:02
Аватар для GuardCat
Просто любитель
Отправить личное сообщение для GuardCat Посмотреть профиль Найти все сообщения от GuardCat
 
Регистрация: 13.09.2011
Сообщений: 300

Сообщение от trikadin
ошибка с передачей event - вы его не передаёте
Позор на мою седую голову...
trikadin, спасибо за ответ и статью. Разобрался.
Ответить с цитированием
  #8 (permalink)  
Старый 11.01.2012, 16:06
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от GuardCat
Позор на мою седую голову...
Да ладно, бывает) Я вот недавно for'овым циклом детей у элемента удалял) Долго думал, в чём ошибка)
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить координаты курсора в текстовом поле в пикселях prike Events/DOM/Window 4 23.05.2013 04:35
проблема с div И animate g00000dman jQuery 2 24.03.2011 23:34
Закрытие прозрачного div при щелчке мыши в любой его области mav1 Элементы интерфейса 8 09.02.2011 19:25
установка курсора nettle Элементы интерфейса 9 19.09.2010 18:38
установка позиции курсора или выделения в iframe mister_maxim Events/DOM/Window 5 18.04.2009 10:43