Возвращаясь к этому, похоже, что после постановки этого вопроса Chrome теперь запускает onChange после ключевых событий. Firefox, кажется, все еще ждет onblur. http://jsfiddle.net/2aQBN/
$(document).ready(function() {
$("#test").on("change", function() {
console.log("Changed.");
});
});
Спецификация W3C предлагает использовать вместо него событие input
.
Когда применяется событие ввода, каждый раз, когда пользователь вызывает элемент
Чтобы изменить значение, пользовательский агент должен поставить задачу в очередь, чтобы запустить простой
событие, которое всплывает с именем input на элементе input.
Однако в элементах Chrome или Firefox для элемента select не отображается событие ввода. (Просто введите элементы.)
Тест, демонстрирующий текущее значение по сравнению с последним значением onchange.
http://jsfiddle.net/teynon/MpyHK/5/
Firefox изменит значение onmouseover. Изменение ключа также изменит значение. Тем не менее, onchange не выстрелил. Если форма отправляется в то время, когда у пользователя открыто меню выбора, отправляется выделенная в данный момент опция.
Из W3C:
Если атрибут Multiple отсутствует и элемент не отключен,
тогда пользовательский агент должен позволить пользователю выбрать элемент опции в
его список опций, который сам по себе не отключен. По этой опции
выбранный элемент (либо с помощью щелчка, либо с помощью расфокусировки
элемент после изменения его значения , либо с помощью команды меню, либо
через любой другой механизм), и до соответствующего взаимодействия с пользователем
событие ставится в очередь (например, до события click), пользовательский агент должен установить
отобранность выбранного элемента option в true, а затем поставить в очередь
задача, чтобы запустить простое событие, которое по имени пузырьки меняются на выбор
элемент, используя источник задачи взаимодействия с пользователем в качестве источника задачи.
На https://bugzilla.mozilla.org/show_bug.cgi?id=126379 идет долгое обсуждение этого вопроса, и многие люди просят, чтобы работали клавиши со стрелками. (И некоторые защищают подход onchange.)
Некоторые пользователи предположили, что W3C неверно описан в спецификации для события select
элемента change
. Вместо этого мы предлагаем внести изменения в спецификацию того, как мы ожидаем, что функциональность select
onchange
будет работать.
Текущая функциональность явно не интуитивна для большого числа людей, основываясь исключительно на количестве сообщений об ошибках. (У Mozilla 40 помечены как дубликаты.)