2012-09-17 7 views
36

Ich möchte nur die Bereiche von JavaScript keyCode s kennen, die typisierten Zeichen entsprechen; oder alternativ der Bereich von nicht-typisierbaren (Steuer) Zeichen wie Backspace, Escape, Command, Shift usw., so dass ich sie ignorieren kann.Ermitteln, ob JavaScript e.keyCode ein druckbares (nicht kontrolliertes) Zeichen ist

Der Grund, den ich frage, ist String.fromCharCode() aufrufen führt zu ungeraden Zeichen für die Steuerungstasten. Zum Beispiel bekomme ich "[" für den linken Befehl, "%" für den linken Pfeil. Komik so.

+6

Sie denken nicht, dass ich es zuerst googled? Komm schon. Hast du überhaupt diese Ergebnisse überprüft oder einfach angenommen, dass ich ein Idiot bin? – devios1

+0

Das Wort, nach dem Sie suchen, ist wahrscheinlich * druckbar *. Außerdem scheint 'keyCode' [system- und implementierungsabhängig] (https://developer.mozilla.org/en-US/docs/DOM/KeyboardEvent#Key_values) zu sein, was nur zu Problemen führt. – Alexander

+0

Meinst du" druckbar "? "? Sicher per Definition ist jeder Tastencode "typisierbar" ... – nnnnnn

Antwort

71

Keydown finden Sie die keyCode des Schlüssels geben gedrückt, ohne irgendwelche Änderungen.

$("#keypresser").keydown(function(e){ 
    var keycode = e.keyCode; 

    var valid = 
     (keycode > 47 && keycode < 58) || // number keys 
     keycode == 32 || keycode == 13 || // spacebar & return key(s) (if you want to allow carriage returns) 
     (keycode > 64 && keycode < 91) || // letter keys 
     (keycode > 95 && keycode < 112) || // numpad keys 
     (keycode > 185 && keycode < 193) || // ;=,-./` (in order) 
     (keycode > 218 && keycode < 223); // [\]' (in order) 

    return valid; 
}); 

nur die Zifferntasten, Buchstabentasten und die Leertaste wird keycodes zu String.fromCharCode korrelieren, wie es Unicode-Werte verwendet.

Keypress ist die charCode-Darstellung des eingegebenen Textes. Beachten Sie, dass dieses Ereignis nicht ausgelöst wird, wenn kein Text als Ergebnis des Tastendrucks "gedruckt" wird.

$("#keypresser").keypress(function(e){ 
    var charcode = e.charCode; 
    var char = String.fromCharCode(charcode); 
    console.log(char); 
}); 

http://jsfiddle.net/LZs2D/1/ Wird zeigen, wie diese funktionieren.

KeyUp verhält sich ähnlich wie KeyDown.

+4

Die Tabulatortaste hat einen Schlüsselcode von 9. – Shmiddty

+1

Viele Zeichen werden z. ',' oder '%' –

+0

@AlexanderElgin Komma ist da, Schlüsselcode 190.% ist gleich 5, Schlüsselcode 52, bei gedrückter Shift-Taste. – BobRodes

4

Dieser Artikel hat eine Liste der keyCodes in Javascript:

http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

+0

Ich habe das gesehen, aber es ist keine vollständige Liste. – devios1

+0

Was klassifizierst du als typisierbare Charaktere? –

+2

Ein Schlüssel, der dazu führt, dass ein Zeichen zu einem Textfeld hinzugefügt wird, wenn es eingegeben wird, im Gegensatz zu Dingen wie Rücktaste, linker Pfeil usw. – devios1