Ich habe Ereignis Feuer Reihenfolge zwischen Browsern untersucht, weil unsere Anwendung ein ungewöhnliches Verhalten auftritt.Reihenfolge der Änderung/keydown/keypress Ereignisse in jQuery
Ich habe einen kleinen Test erstellt, um die Reihenfolge der drei Ereignisse zu sehen: Änderung, Keydown und Tastendruck. Hier
ist die 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>
Hier ist die 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");
});
});
Wenn ich Buchstabe f in das Textfeld eingeben, drücken Sie die Eingabetaste die folgenden in Internet Explorer, ich 8:
Ergebnisse
- Key nach unten
- Key drücken
- ändern
- Key nach unten
- Key drücken
Aber in Firefox (3.6.8), erhalte ich folgendes:
Ergebnisse
- Taste
- Key drücken
- Key nach unten
- Key drücken
- ändern
Die Reihenfolge der Änderungsereignis ist bedeutsam, da wir die Enter-Taste in dem Ereignis KeyDown aufnimmst, aber einige Validierung mit der zu tun Ändern Sie das Ereignis.
Ich habe mich umgesehen, konnte aber das Problem nicht identifizieren.
Ist das erwartete Verhalten? Sollten alle Browser jQuery-Ereignisse in einer bestimmten Reihenfolge auslösen? Oder sollten wir alle Annahmen für die Reihenfolge der Ereignisauslösung entfernen? Oder gibt es etwas anderes, das mir in die Quere kommt?
Ich bin überrascht, dass das keine Antworten hat noch, wie ich es als interessantes Verhalten hätte gedacht, durch IE. Vielleicht hat IE zu viel interessantes Verhalten. – Russell
Ich kann bestätigen, dass sich IE9 in dieser Hinsicht genauso verhält wie IE8. – nickf