IE e.keyCode - Wie kann ich zwischen kaufmännischem Und und Pfeil nach oben unterscheiden?

8

Ich kämpfe mit einem sehr seltsamen JavaScript-Verhalten auf einem jQuery-UI-Widget, das ich zu beheben versuche. IE7 (win XP), jQuery 1.2.6 (ja, es ist eine alte Version).

Das Widget ist ein Kombinationsfeld, das Tastaturereignisse erfasst und spezielle Verhalten für die Pfeiltasten aufweist.

Wenn ich versuche, das "& amp;" Zeichen in das Eingabefeld flexbox, bekomme ich seltsames Verhalten.

Die flexbox hat einen Code wie:

%Vor%

Wenn ich eine Logging-Anweisung einführe, finde ich, dass "& amp;" (shift + 7) erzeugt drei Tastendruckereignisse:

%Vor%

Offensichtlich ist keyCode 38 sowohl die Pfeil-nach-oben-Taste als auch der ASCII-Code für kaufmännisches Und?

Als ich dies schrieb, fiel mir auf, dass ich den Tastendruck als "shift + 7" (keyCode 55) erkennen kann, um es als kaufmännisches Und-Zeichen zu behandeln, und setze dann eine Art Flag, um den nächsten Tastendruck zu ignorieren ist das 38). Das scheint ein schrecklicher Hack zu sein.

Hat jemand eine bessere Möglichkeit, zwischen Sonderzeichen wie "& amp;" und die Pfeiltasten im IE?

    
RMorrisey 04.03.2010, 00:04
quelle

4 Antworten

3

Dies ist, was ich getan habe:

%Vor%

Hoffe, das hilft jemandem. Wenn Sie diesen Code erneut verwenden, müssen Sie möglicherweise die Verwendung des Schlüsselwortes 'this' anpassen, je nachdem, auf welches Objekt es verweist (hier handelt es sich um ein JavaScript-Objekt, das dem flexbox-Widget zugeordnet ist).

Bearbeiten: Ich habe diesen Code aktualisiert und den regulären Ausdruckstest entfernt, der zuvor dort war und den ich als fehlerhaft erkannt habe.

    
RMorrisey 04.03.2010, 00:38
quelle
2

Ich denke, keydown könnte Ihnen zuverlässigere Daten geben als keypress .

    
Tobias Cohen 04.03.2010 00:15
quelle
1

Ich empfehle, diese jquery-Bibliothek zu verwenden, um benutzerdefinierte Handler für Tastatureingaben zu schreiben: Ссылка

Der Versuch, Keycodes logisch zu erkennen, ist ein Albtraum.

    
Neil McKeown 04.03.2010 11:44
quelle
0

Taste nach oben oder unten gibt einen keyCode von 55 für '& amp;' und 38 für 'Pfeil nach oben'

    
kennebec 04.03.2010 02:54
quelle