keyup
- единственное событие, которое может видеть состояние после нажатия клавиши.
Один из подходов - перехватить keydown
и установить тайм-аут для некоторой обработки после нажатия клавиши:
input.onkeydown= function() {
setTimeout(function() {
// do something
}, 1);
};
Однако, если также возможно редактировать без нажатия клавиш (как правило, с помощью перетаскивания и пунктов меню, таких как вырезание и вставка), никакие проверки ключевых событий не помогут. Вместо этого вы должны просто опросить состояние, чтобы увидеть, изменилось ли оно. Вы можете сделать это с помощью обработчика onkeyup или тайм-аута onkeydown, чтобы ускорить обновление конкретного случая.
var oldstate= input.value;
function checkState() {
if (input.value!=oldstate) {
// do something
oldstate= input.value;
}
}
setInterval(checkState, 1000);
input.onkeyup= checkState;
(для простоты используется элемент ввода, но он в равной степени применим к contentEditable.)