Jak ustawić pozycję kursora w polu tekstowym za pomocą jQuery? Mam pole tekstowe z zawartością i chcę, aby kursor użytkowników był ustawiony z pewnym przesunięciem, gdy skupią się na polu. Kod powinien wyglądać mniej więcej tak:
$('#input').focus(function() {
$(this).setCursorPosition(4);
});
Jak wyglądałoby wdrożenie tej funkcji setCursorPosition? Jeśli masz pole tekstowe z zawartością abcdefg, to wywołanie spowoduje ustawienie kursora w następujący sposób: abcd ** | ** efg.
Java ma podobną funkcję, setCaretPosition. Czy istnieje podobna metoda dla javascript?
Aktualizacja: zmodyfikowałem kod CMS do pracy z jQuery w następujący sposób:
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)
? Wiesz, że to dokładnie to samothis.setSelectionRange
, tylko wolniejsze i trudniejsze do odczytania, prawda? jQuery nie robi dla ciebie dosłownie nic.