Возможно, вам нужен выбранный диапазон в дополнение к позиции курсора. Вот простая функция, вам даже не нужен 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()
или что-то вроде Underscores, _debounce()
если текут события:
$('input[type="text"]').on('keyup mouseup mouseleave', function() {
caretPosition($(this));
});
Вот скрипка, если вы хотите попробовать это: https://jsfiddle.net/Dhaupin/91189tq7/