Có lẽ bạn cần một phạm vi được chọn ngoài vị trí con trỏ. Đây là một hàm đơn giản, thậm chí bạn không cần 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)');
}
}
Giả sử bạn muốn gọi nó trên đầu vào bất cứ khi nào nó thay đổi hoặc chuột di chuyển vị trí con trỏ (trong trường hợp này chúng tôi đang sử dụng jQuery .on()
). Vì lý do hiệu suất, có thể là một ý tưởng tốt để thêm setTimeout()
hoặc một cái gì đó như Underscores _debounce()
nếu các sự kiện được đưa vào:
$('input[type="text"]').on('keyup mouseup mouseleave', function() {
caretPosition($(this));
});
Đây là một câu đố nếu bạn muốn dùng thử: https://jsfiddle.net/Dhaupin/91189tq7/