Je veux ajouter une réponse «tardive», parce que j'ai eu du mal avec change
, keyup
et search
aujourd'hui, et peut-être que ce que j'ai trouvé à la fin peut être utile pour d'autres aussi. En gros, j'ai un panneau de recherche en tant que type, et je voulais juste réagir correctement à la presse du petit X (sous Chrome et Opera, FF ne l'implémente pas), et effacer un volet de contenu en conséquence.
J'avais ce code:
$(some-input).keyup(function() {
// update panel
}
$(some-input).change(function() {
// update panel
}
$(some-input).on("search", function() {
// update panel
}
(Ils sont séparés car je voulais vérifier quand et dans quelles circonstances chacun était appelé).
Il s'avère que Chrome et Firefox réagissent différemment. En particulier, Firefox traite change
comme «chaque modification apportée à l'entrée», tandis que Chrome la traite comme «lorsque le focus est perdu ET que le contenu est modifié». Ainsi, sur Chrome, la fonction "panneau de mise à jour" a été appelée une fois, sur FF deux fois pour chaque frappe (une entrée keyup
, une entrée change
)
De plus, effacer le champ avec le petit X (qui n'est pas présent sous FF) a déclenché l' search
événement sous Chrome: non keyup
, non change
.
La conclusion? Utilisez à la input
place:
$(some-input).on("input", function() {
// update panel
}
Il fonctionne avec le même comportement sous tous les navigateurs que j'ai testés, réagissant à chaque changement dans le contenu d'entrée (copier-coller avec la souris, saisie semi-automatique et "X" inclus).
onchange
événement?