Примеры JavaScript - Как переместить (установить) текстовый курсор в начало или конец поля ввода textarea или input?

ОГЛАВЛЕНИЕ


Как переместить (установить) текстовый курсор в начало или конец поля ввода textarea или input?

IE4+

Internet Explorer позволяет нам сделать это при помощи следующих методов :

createTextRange() - данный метод создает объект типа TextRange (текстовый диапазон) и позволяет манипулировать текстом. Пустой текстовый диапазон представляет собой курсор - точку ввода.

collapse() - данный метод объекта TextRange сужает текстовый диапазон до 0 (превращает его в курсор (в точку ввода)) и устанавливает точку ввода либо в начало диапазона (collapse(true) или просто collapse(), так как значение по умолчанию true) или в конец (collapse(false)).

select() - медод объекта TextRange нужный для визуального выделения текста включенного в диапазон. В случае пустого диапазона просто устанавливает текстовый курсор.

Пример:

function moveCaretToStart(inputObject)
{
  if (inputObject.createTextRange)
  {
   var r = inputObject.createTextRange();
   r.collapse(true);
   r.select();
  }
}

function moveCaretToEnd(inputObject)
{
  if (inputObject.createTextRange)
  {
   var r = inputObject.createTextRange();
   r.collapse(false);
   r.select();
  }
}

в качестве аргумента ф-ям передается объект элемента ввода, например: moveCaretToStart(document.formName.textareaName)

Mozilla/Gecko

setSelectionRange(start, end) - данный метод создающий текстовое выделение в случае когда start и end совпадают установит курсор в нужную позицию

function moveCaretToStart(inputObject)
{
 if (inputObject.selectionStart)
 {
  inputObject.setSelectionRange(0,0);
  inputObject.focus();
 }
}
function moveCaretToEnd(inputObject)
{
 if (inputObject.selectionStart)
 {
  var end = inputObject.value.length;
  inputObject.setSelectionRange(end,end);
  inputObject.focus();
 }
}