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?
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.
Ich denke, keydown
könnte Ihnen zuverlässigere Daten geben als keypress
.
Ich empfehle, diese jquery-Bibliothek zu verwenden, um benutzerdefinierte Handler für Tastatureingaben zu schreiben: Ссылка
Der Versuch, Keycodes logisch zu erkennen, ist ein Albtraum.
Tags und Links javascript jquery keypress keycode internet-explorer-7