Я изначально собирался предложить событие oninput
, например, ответ thg435 , но я подумал, что сначала я найду подробности в комментариях.Если вам не нужно различать исправления для проверки орфографии и другие типы ввода (клавиатура, вставка, перетаскивание и т. Д.), То oninput
прекрасно справится с этой задачей.
Если вы do хотите провести различие между этими типами ввода, поэтому я боюсь, что нет события, которое запускается специально для исправлений проверки правописания.Однако существуют события для большинства других типов ввода, поэтому вы можете по крайней мере сузить вероятность того, что ваше событие ввода будет исправлением, если вы сначала проверите другие типы событий.Учтите следующее:
(function () {
var el = document.getElementById("MyInput"),
ignore = false;
el.oninput = function (e) {
// ignore the events that we don't need to capture
if (ignore) {
ignore = false;
return true;
}
// Your code here
}
// IIRC, you need the following line for the `ondrop` event to fire
el.ondragover = function () { return false; }
// Ignore paste, drop and keypress operations
el.onpaste = el.ondrop = el.onkeypress = setIgnore;
function setIgnore (e) {
ignore = true;
}
})();
Однако это не идеальное решение.Например, событие по-прежнему будет запускаться для действий отмены / возврата (и, возможно, некоторых других действий), которые не инициированы клавиатурой.