Как задать позицию курсора в 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. Если Вам необходимо получить позицию курсора, смотрите этот вопрос.

1 комментарий

  • WernerSaw:

    Соберем для Вас по интернет клиентские базы данных для Вашего Бизнеса Узнайте подробнее по Email: prodawez392@gmail.com Тел +79139230330(wiber/whatsapp/telegram) Skype: prodawez390

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


(обязательно)