Reihenfolge der Änderung / keydown / keypress Ereignisse in jQuery

9

Ich habe die Ereignisfeuerfolge zwischen Browsern untersucht, weil unsere Anwendung ungewöhnliches Verhalten aufweist.

Ich habe einen kleinen Test erstellt, um die Reihenfolge der drei Ereignisse zu sehen: Änderung, Tastenfolge und Tastendruck.

Hier ist das HTML (test.html):

%Vor%

Hier ist der JS (test.js):

%Vor%

Wenn ich den Buchstaben f in das Textfeld eintippe und dann die Eingabetaste drücke, bekomme ich in Internet Explorer 8 folgendes:

Ergebnisse

  • Taste gedrückt
  • Taste drücken
  • Ändern
  • Taste gedrückt
  • Taste drücken

Aber in Firefox (3.6.8) bekomme ich Folgendes:

Ergebnisse

  • Taste gedrückt
  • Taste drücken
  • Taste gedrückt
  • Taste drücken
  • Ändern

Die Reihenfolge des Änderungsereignisses ist von Bedeutung, da wir die Enter-Taste im Keydown-Ereignis erfassen, jedoch eine Validierung mit dem Change-Ereignis durchführen.

Ich habe mich umgesehen, konnte aber nicht feststellen, wo das Problem liegt.
Ist das erwartetes 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 in die Art und Weise hineinkommt, an die ich nicht denke?

    
Russell 13.08.2010, 01:28
quelle

2 Antworten

3

Ich konnte im Netz nichts über dieses spezifische Szenario finden, außer dass diese Ereignisreihenfolge bei der Implementierung von Browsern nicht vorausgesetzt wird.

Dies führt mich dazu, die Annahme zu entfernen, dass die Änderungsmethode immer nach onkeydown kommt, und muss meinen Validierungs- / Übergabeprozess mit dieser Überlegung entwerfen.

Grundsätzlich werde ich validation / submit in eine Methode verschieben und sie von beiden Ereignissen aufrufen, aber stelle sicher, dass sie nur einmal mit einem Flag aufgerufen wird.

Wenn jemand irgendwelche zusätzlichen Informationen / Ratschläge dazu hat, wäre das großartig. :)

    
Russell 14.08.2010, 02:07
quelle
1

Ich weiß, dass die Frage alt ist, aber ich endete damit in einer ähnlichen Situation wie OP:

%Vor%     
Michel Müller 28.08.2013 12:32
quelle

Tags und Links