Установка курсора в 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, время: 11:05. |