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.
Für meinen Anwendungsfall brauche ich speziell ASCII-Codes, also funktioniert das nicht. –
@JoshuaSchultheiss Wie Sie erwartet haben, gibt es den richtigen keyCode zurück. –
Oh ja, der erste scheitert. Lass mich den Grund finden. Und wie hast du '43' bekommen? –