Я не думаю, что есть встроенное событие, чтобы проверить это, но вы можете использовать комбинацию keypress
, mousedown
и других событий, которые могут вызвать изменение положения каретки, затем проверить наличие измененийselectionStart
текстовой области (которая указывает позицию каретки):
const textarea = document.querySelector('textarea');
textarea.addEventListener('keypress', checkcaret); // Every character written
textarea.addEventListener('mousedown', checkcaret); // Click down
textarea.addEventListener('touchstart', checkcaret); // Mobile
textarea.addEventListener('input', checkcaret); // Other input events
textarea.addEventListener('paste', checkcaret); // Clipboard actions
textarea.addEventListener('cut', checkcaret);
textarea.addEventListener('mousemove', checkcaret); // Selection, dragging text
textarea.addEventListener('select', checkcaret); // Some browsers support this event
textarea.addEventListener('selectstart', checkcaret); // Some browsers support this event
let pos = 0;
function checkcaret() {
const newPos = textarea.selectionStart;
if (newPos !== pos) {
console.log('change to ' + newPos);
pos = newPos;
}
}
<textarea></textarea>