2016-03-30 15 views
1

Ich möchte einen Tastendruck machen und seine ASCII-Darstellung erhalten. Dazu gehört auch, wenn die SHIFT-Taste gedrückt wird, dhTastendruck auf ASCII-Wert

  • "shift =" liefert 43
  • "a" zurückgibt 97
  • "shift a" 65

zurück Gibt es eine Weise, die ich kann dies tun, ohne viel Code zu schreiben?

Edit:

document.onkeypress = function() { 
 
    console.log(event.which); 
 
}

Antwort

4

In sehr weniger Code, können Sie tun:

document.onkeypress = function() { 
 
    console.log(event.which); 
 
}

Überprüfen Sie Ihre Konsole, nachdem Sie den obigen Code ausgeführt haben.

PS: Das Gewicht des obigen Codes ist 55 Zeichen.;)

Update: Es sollte onkeypress und nicht onkeydown sein. Danke Timo.

+0

Für meinen Anwendungsfall brauche ich speziell ASCII-Codes, also funktioniert das nicht. –

+0

@JoshuaSchultheiss Wie Sie erwartet haben, gibt es den richtigen keyCode zurück. –

+0

Oh ja, der erste scheitert. Lass mich den Grund finden. Und wie hast du '43' bekommen? –

0

Hier sind die Dezimalkodierungen für den Groß-/Kleinbuchstaben "a" in 7-Bit ASCII (aka us-ascii).

char decimal hexidecimal 
A  65   41 
a  97   61 

http://www.asciitable.com/

Hier ist das Ding. keyCode! = ascii (unbedingt). Denken Sie daran, viele verschiedene Tastaturen, Sprachen, etc. Ich kann (in Software) ein US-Englisch-Layout auf einer deutschen Tastatur zum Beispiel auswählen. Das ist auf Betriebssystemebene.

Innerhalb des Browsers verwendet die Formzeichencodierung standardmäßig die Seitencodierung (z. B. utf-8, iso-8859-1 usw.), sofern nicht anders angegeben.

Sie können das folgende Snippet verwenden, um einen Blick darauf zu werfen, was sich im keypress-Ereignis befindet.

document.onkeypress = function (e) { 
    var charCode = (typeof e.which == "number") ? e.which : e.keyCode; 
    console.log('charCode: ' + charCode + 
       ' keyIdentifier: ' + e.keyIdentifier + 
       ' which: ' + e.which + 
       ' keyCode: ' + e.keyCode + 
       ' shiftKey: ' + e.shiftKey + 
       ' ctrlKey: ' + e.ctrlKey + 
       ' altKey: ' + e.altKey + 
       ' metaKey: ' + e.metaKey); 
} 

Die folgende Antwort erklärt, dass keypress Ereignis verwendet, ist im Allgemeinen die einzige zuverlässige Art und Weise einen Zeichencode anstelle eines Schlüsselcode zu erhalten. Und es scheint, dass Sie danach suchen.

JavaScript KeyCode vs CharCode

Sicher genug, mit onkeypress statt onkeydown oder onkeyup gibt mir 65 und 97 für "A" und "a".Sie müssten nur Ihr Javascript aktualisieren, um Ereignisse von Schlüsseln zu ignorieren, an denen Sie nicht interessiert sind (zB shift, etc).

Interessantes Experiment wäre, mit Seitencodierung und Zeichen außerhalb des 7-Bit ASCII-Bereichs zu spielen und zu sehen, wie gut diese Methode funktioniert, um die tatsächlichen Zeichenkodierungen zu erhalten.