Talvez você precise de um intervalo selecionado além da posição do cursor. Aqui está uma função simples, você nem precisa do 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)');
}
}
Digamos que você queira chamá-lo em uma entrada sempre que ele mudar ou o mouse mover a posição do cursor (neste caso, estamos usando o jQuery .on()
). Por motivos de desempenho, pode ser uma boa ideia adicionar setTimeout()
ou algo como Sublinhados _debounce()
se os eventos estiverem chegando:
$('input[type="text"]').on('keyup mouseup mouseleave', function() {
caretPosition($(this));
});
Aqui está um violino, se você quiser experimentá-lo: https://jsfiddle.net/Dhaupin/91189tq7/