Как получить позицию курсора в текстовом поле (textarea) на JavaScript?

Вопрос

Как на JavaScript можно получить позицию курсора в текстовом поле textarea? Например, пусть есть такой текст с курсором:
Это некий| текст.

Функция должна вернуть 9.

Ответ №1

Между прочим, в английском языке курсор для редактирования также называют кареткой, чтобы было понятно, о каком курсоре идёт речь.

Если бы не Internet Explorer, можно было бы использовать функцию textarea.selectionStart, она работает в Firefox, Chrome, Safari. Но поскольку IE не поддерживает эту функцию, можно использовать следующую:

function getCaret(el) {
if (el.selectionStart) {
return el.selectionStart;
} else if (document.selection) {
el.focus();

var r = document.selection.createRange();
if (r == null) {
return 0;
}

var re = el.createTextRange(),
rc = re.duplicate();
re.moveToBookmark(r.getBookmark());
rc.setEndPoint(''EndToStart'', re);

return rc.text.length;
}
return 0;
}

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

alert(getCaret(document.getElementById(''thetext'')));
Пример

Ещё есть плагин для jQuery для работы для задания и получения позиции курсора (каретки).

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

No responses yet

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