Я хочу , чтобы добавить «поздно» ответ, потому что я боролся с change
, keyup
и search
сегодня, и , возможно , что я нашел в конце концов , может оказаться полезным для других тоже. По сути, у меня есть панель поиска по типу, и я просто хотел правильно отреагировать на нажатие маленькой буквы X (в Chrome и Opera она не реализована в FF) и в результате очистить панель содержимого.
У меня был этот код:
$(some-input).keyup(function() {
// update panel
}
$(some-input).change(function() {
// update panel
}
$(some-input).on("search", function() {
// update panel
}
(Они раздельные, потому что я хотел проверить, когда и при каких обстоятельствах каждый звонил).
Оказывается, Chrome и Firefox реагируют по-разному. В частности, Firefox рассматривает change
как «каждое изменение ввода», в то время как Chrome обрабатывает его как «когда фокус потерян и содержимое изменено». Таким образом, в Chrome функция «панели обновления» вызывалась один раз, в FF - дважды для каждого нажатия клавиши (один вход keyup
, один вход change
)
Кроме того, очистка поля с помощью маленькой буквы X (которой нет в FF) вызвала search
событие в Chrome: нет keyup
, нет change
.
Вывод? Используйте input
вместо:
$(some-input).on("input", function() {
// update panel
}
Он работает с одинаковым поведением во всех протестированных мною браузерах, реагируя на каждое изменение входного содержимого (копирование-вставка с помощью мыши, автозаполнения и «X»).
onchange
события?