Первоначально я собирался предложить событие oninput
, например ответ thg435, но я подумал, что буду искать более подробную информацию в сначала комментарии. Если вам не нужно различать исправления проверки орфографии и другие типы ввода (клавиатура, вставка, перетаскивание и т. д.), то oninput
прекрасно справится с этой задачей.
Если вы действительно хотите различать эти типы ввода, то, боюсь, нет события, которое срабатывает специально для исправлений проверки орфографии. Однако существуют события для большинства других типов ввода, поэтому вы можете как минимум сузить вероятность того, что ваше событие ввода является исправлением, если вы сначала проверите другие типы событий. Рассмотрим следующее:
(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;
}
})();
Однако это не идеальное решение. Например, событие по-прежнему будет срабатывать для действий Undo/Redo (и, возможно, некоторых других действий), которые не инициируются клавиатурой.
person
Andy E
schedule
31.01.2012