Установка курсора в div с contentEditable=true
Здраствуйте. Подскажите, пожалуйста, каким образом можно установить курсор мыши в конец текста div'а с contentEditable=true.
|
Апну. Есть способы это сделать?
|
Range, не?
|
Поищите на форуме, кучу раз вопрос поднимали.
|
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, вы правильно сделали 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. Читайте статью. |
Цитата:
trikadin, спасибо за ответ и статью. Разобрался. |
Цитата:
|
Часовой пояс GMT +3, время: 01:25. |