Quizás necesite un rango seleccionado además de la posición del cursor. Aquí hay una función simple, ni siquiera necesita 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 quiere llamarlo en una entrada cada vez que cambia o el mouse mueve la posición del cursor (en este caso estamos usando jQuery .on()
). Por razones de rendimiento, puede ser una buena idea agregar setTimeout()
o algo así como guiones bajos _debounce()
si los eventos están llegando:
$('input[type="text"]').on('keyup mouseup mouseleave', function() {
caretPosition($(this));
});
Aquí hay un violín si quieres probarlo: https://jsfiddle.net/Dhaupin/91189tq7/