Есть ли какой-либо способ в jQuery получить текущую позицию курсора в текстовом вводе, не делая уродливого кода браузера?
Как в:
<input id="myTextInput" type="text" value="some text" >
курсор после "x" "некоторого текста", я могу получить "8"?
Есть ли какой-либо способ в jQuery получить текущую позицию курсора в текстовом вводе, не делая уродливого кода браузера?
Как в:
<input id="myTextInput" type="text" value="some text" >
курсор после "x" "некоторого текста", я могу получить "8"?
Вы не можете сделать это без какого-либо определенного кода браузера, так как они реализуют выбор текста немного по-другому. Однако есть плагины, которые абстрагируют это. Для того, что вам нужно, там плагин jQuery Caret (jCaret).
Здесь вы можете попробовать демо.
Для вашего кода, чтобы получить позицию, вы можете сделать что-то вроде этого:
$("#myTextInput").bind("keydown keypress mousemove", function() {
alert("Current position: " + $(this).caret().start);
});
Предупреждение о плагине JQuery Caret.
Он будет конфликтовать с Masked Input plugin (или наоборот). К счастью, плагин Masked Input включает в себя собственную функцию каретки(), которую вы можете использовать очень похоже на плагин Caret для ваших основных потребностей - $(element).caret(). Begin или .end
Используя синтаксис text_element.selectionStart, мы можем получить начальную позицию выбора текста в терминах индекса первого символа выделенного текста в text_element.value, и в случае, если мы хотим получить то же самое из последний символ в выборе мы должны использовать text_element.selectionEnd.
Используйте его следующим образом:
<input type=text id=t1 value=abcd>
<button onclick="alert(document.getElementById('t1').selectionStart)">check position</button>
Я даю вам fiddle_demo
просто наткнулся на просмотр, может помочь вам javascript-getting-and-setting-caret-position-in-textarea. Вы также можете использовать его для текстового поля.