Saya ingin menambahkan jawaban "terlambat", karena saya berjuang dengan change, keyupdan searchhari ini, dan mungkin apa yang saya temukan pada akhirnya mungkin berguna bagi orang lain juga. Pada dasarnya, saya memiliki panel search-as-type, dan saya hanya ingin bereaksi dengan baik terhadap pers X kecil (di bawah Chrome dan Opera, FF tidak mengimplementasikannya), dan menghapus panel konten sebagai hasilnya.
Saya punya kode ini:
$(some-input).keyup(function() {
// update panel
}
$(some-input).change(function() {
// update panel
}
$(some-input).on("search", function() {
// update panel
}
(Mereka terpisah karena saya ingin memeriksa kapan dan dalam keadaan apa masing-masing dipanggil).
Ternyata Chrome dan Firefox bereaksi secara berbeda. Secara khusus, Firefox memperlakukan changesebagai "setiap perubahan pada input", sementara Chrome memperlakukannya sebagai "ketika fokus hilang DAN konten berubah". Jadi, di Chrome, fungsi "panel pembaruan" dipanggil sekali, pada FF dua kali untuk setiap penekanan tombol (satu masuk keyup, satu masuk change)
Selain itu, membersihkan bidang dengan X kecil (yang tidak ada di bawah FF) meluncurkan searchacara di bawah Chrome: tidak keyup, tidak change.
Kesimpulannya? Gunakan inputsebaliknya:
$(some-input).on("input", function() {
// update panel
}
Ini bekerja dengan perilaku yang sama di bawah semua browser yang saya uji, bereaksi pada setiap perubahan konten input (salin-tempel dengan mouse, pelengkapan otomatis dan "X" termasuk).
onchangeacara?