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