Я хочу , щоб додати «пізній» відповідь, тому що я боровся з 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
події?