Как задать позицию курсора в textarea на JavaScript?

Вопрос

Как можно задать позицию курсора в текстовом поле (textarea) на JavaScript? Я заполняю текстовое поле каким то текстом, и хочу, чтобы курсор редактирования сдвигался на несколько символов вправо, когда пользователь кликает по тексту. Код должен выглядеть примерно так:

$(''#input'').focus(function() {
$(this).setCursorPosition(4);
});

В этом примере 4 — это позиция курсора, то есть на 4 символа вправо, ну примерно вот-так: abcd|efg.
В Java есть похожая функция setCaretPosition, а есть ли что-то подобное в JavaScript?

Ответ №1

Поместить курсор в заданную позицию textarea можно с помощью двух функций:

function setSelectionRange(input, selectionStart, selectionEnd) {
if (input.setSelectionRange) {
input.focus();
input.setSelectionRange(selectionStart, selectionEnd);
}
else if (input.createTextRange) {
var range = input.createTextRange();
range.collapse(true);
range.moveEnd(''character'', selectionEnd);
range.moveStart(''character'', selectionStart);
range.select();
}
}

function setCaretToPos (input, pos) {
setSelectionRange(input, pos, pos);
}

Использовать так:

setCaretToPos(document.getElementById("inputid"), 4);
Пример


В этом примере рассмотрено помещение курсора в заданную позицию в textarea. Если Вам необходимо получить позицию курсора, смотрите этот вопрос.

No responses yet

Добавить комментарий