Mar 2013

Javascript Key Codes • Auslesen von Tastureingaben

Die Bearbeitung und Plausibilitätsprüfung von Benutzereingaben in Formularfeldern gehören zu den typischen Programmierarbeiten mit Javascript.

Neben den einfach zu erkennenden Druck auf Tasten wie »a«, »9« oder »#« muss auch das Herunterdrücken der Sondertasten wie ctrl, alt, Shift, Pfeil nach oben, Pfeil nach links, usw. erkannt werden.

Mit der zunehmenden Bedeutung von Javascript für Web-Apps kommt den Javascript-Events eine immer höhere Bedeutung zu. Das einfache Absenden eines Formulars und das Erkennen eines einzelnen Zeichens reichen für ausgefeilte Javascript-Anwendungen nicht mehr aus.

Soll z.B. eine Navigation mit den Pfeil-Tasten umgesetzt werden, müssen die jeweiligen Tasten erkannt werden, wird die Maus einfach bewegt oder beim mouse move auch die Shift- oder Alt-Taste gehalten?

In der Event Level 2 Spezifikation hat das W3C noch die Finger von den Tasten gelassen, aber Javascript unterstützt die Tastatur-Events nichts desto Trotz seit eh und je. Mit DOM Level 3 Events ist die Unterstützung jetzt endlich offiziell …

keyCode, charCode und which

Traditionell liefert das Drücken einer Taste auf der Tastatur drei Werte: keyCode, charCode und which. Jedes dieser drei Attribute ist ein numerischer Wert.

  • keyCode: numerischer Wert der gedrückten Taste
  • charCode: Ascii-Schlüssel der Taste
  • which ist das Zeichen

keyCode eines Events abfragen

Nun sind nicht alle Tastaturen gleich: Amerikanische Tastaturen enthalten kein ä, deutsche Tastaturen brauchen eine Tastatur-Kombination, um ein französisches E Accent Grave umzusetzen.

Der Key Code wird als Eigenschaft des Javascript Events onkeydown abgehört, z.B. wie folgt:

function getKeyCode(event) {
   event = event || window.event;
   return event.keyCode;
}

Das Ergenis zeigt die einzelne Taste, die gedrückt wurde – und zwar als Zahl. Bei einigen Tasten allerdings kann das Event schon vom Betriebssystem abgefangen werden (z.B. die Tasten Lautsprecher lauter oder leiser auf dem Mac).

In das Eingabefeld klicken oder navigieren und eine Taste drücken, um den Javascript-Key Code anzuzeigen:

TasteKey CodeTasteKey CodeTasteKey Code
backspace8tab9enter13
shift16ctrl17alt18
pause/break19caps lock20escape27
page up33page down34end35
home36left arrow37up arrow38
right arrow39down arrow40insert45
delete46048149
250351452
553654755
856957a65
b66c67d68
e69f70g71
h72i73j74
k75l76m77
n78o79p80
q81r82s83
t84u85v86
w87x88y89
z90left window key91right window key92
select key93numpad 096numpad 197
numpad 298numpad 399numpad 4100
numpad 5101numpad 6102numpad 7103
numpad 8104numpad 9105multiply106
add107subtract109decimal point110
divide111f1112f2113
f3114f4115f5116
f6117f7118f8119
f9120f10121f11122
f12123num lock144scroll lock145
semi-colon186equal sign187comma188
dash189period190forward slash191
grave accent192open bracket219back slash220
close braket221single quote222

Hier sind nur einige Beispiele realisiert – viel erschöpfender zum Thema keyCodes – Tastencodes der Tastatur ist JavaScript Madness: Keyboard Events.