Можливо, вам потрібен вибраний діапазон, крім позиції курсору. Ось проста функція, вам навіть не потрібен jQuery:
function caretPosition(input) {
var start = input[0].selectionStart,
end = input[0].selectionEnd,
diff = end - start;
if (start >= 0 && start == end) {
// do cursor position actions, example:
console.log('Cursor Position: ' + start);
} else if (start >= 0) {
// do ranged select actions, example:
console.log('Cursor Position: ' + start + ' to ' + end + ' (' + diff + ' selected chars)');
}
}
Скажімо, ви хочете викликати його на вході щоразу, коли він змінюється або миша переміщує положення курсору (у цьому випадку ми використовуємо jQuery .on()
). З міркувань продуктивності може бути хорошою ідеєю додати setTimeout()
або щось на зразок підкреслення, _debounce()
якщо події переливаються:
$('input[type="text"]').on('keyup mouseup mouseleave', function() {
caretPosition($(this));
});
Ось загадка, якщо ви хочете спробувати її: https://jsfiddle.net/Dhaupin/91189tq7/