Как установить позицию курсора в текстовом поле с помощью jQuery? У меня есть текстовое поле с содержимым, и я хочу, чтобы курсор пользователя располагался с определенным смещением, когда он фокусируется на поле. Код должен выглядеть примерно так:
$('#input').focus(function() {
$(this).setCursorPosition(4);
});
Как будет выглядеть реализация этой функции setCursorPosition? Если у вас есть текстовое поле с содержимым abcdefg, этот вызов приведет к позиционированию курсора следующим образом: abcd ** | ** efg.
Java имеет аналогичную функцию setCaretPosition. Существует ли подобный метод для JavaScript?
Обновление: я изменил код CMS для работы с jQuery следующим образом:
new function($) {
$.fn.setCursorPosition = function(pos) {
if (this.setSelectionRange) {
this.setSelectionRange(pos, pos);
} else if (this.createTextRange) {
var range = this.createTextRange();
range.collapse(true);
if(pos < 0) {
pos = $(this).val().length + pos;
}
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
}
}(jQuery);
$(this).get(0).setSelectionRange)
? Вы знаете, что это точно так жеthis.setSelectionRange
, только медленнее и труднее читать, верно? JQuery здесь буквально ничего не делает для вас.