J'ai étudié l'ordre de tir d'événement entre les navigateurs, parce que notre application rencontre un comportement inhabituel.Ordre de changement/événements keydown/keypress dans jQuery
J'ai créé un petit test pour voir l'ordre des trois événements: changement, keydown et keypress.
Voici le code HTML (test.html):
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
<script src="test.js"></script>
</head>
<body>
<input type="text" id="TextBox" />
<input type="button" id="Button" value="Clear Results"/>
<hr />
<table id="ResultTable" style="width: 100px">
<tr><th>Results</th></tr>
</table>
</body>
</html>
Voici la JS (test.js):
/*
Appends event information to display table.
*/
$(document).ready(function() {
$("#TextBox").change(function() {
$("<tr><td>Change</td></tr>").appendTo("#ResultTable");
});
$("#TextBox").keydown(function() {
$("<tr><td>Key down</td></tr>").appendTo("#ResultTable");
});
$("#TextBox").keypress(function() {
$("<tr><td>Key press</td></tr>").appendTo("#ResultTable");
});
$("#Button").click(function() {
$("#ResultTable").empty();
$("<tr><th>Results</th></tr>").appendTo("#ResultTable");
});
});
Lorsque je tape la lettre f dans la zone de texte, puis appuyez sur Entrée , je reçois ce qui suit dans Internet Explorer 8:
Résultats
- clé vers le bas
- presse clé
- Changement
- clé vers le bas
- appuyer sur la touche
Mais dans Firefox (3.6.8), je reçois le texte suivant:
Résultats
- Clé en bas
- presse clé
- touche vers le bas
- presse clé
- changement
L'ordre de l'événement de changement est important que nous saisissons la touche entrée dans l'événement KeyDown, mais faire une validation avec le changer d'événement. J'ai regardé autour de moi, mais je n'ai pas pu identifier l'origine du problème.
Est-ce que ce comportement est attendu? Tous les navigateurs doivent-ils déclencher les événements jQuery dans un ordre spécifique? Ou devrions-nous supprimer toutes les hypothèses pour l'ordre de déclenchement de l'événement? Ou y a-t-il autre chose qui m'empêche de penser?
Je suis surpris cela n'a pas encore de réponse que je l'aurais pensé comme un comportement intéressant par C'EST À DIRE. Peut-être que IE a trop de comportement intéressant. – Russell
Je peux confirmer que IE9 se comporte comme IE8 à cet égard. – nickf