2010-06-26 5 views
6
<html> 
<head> 
<title>Test</title> 

<script type="text/javascript"> 

function showChar(e) { 
    if (e.keyCode != 16) { 
     alert(
      "keyCode: " + e.keyCode + "\n" 
      + "SHIFT key pressed: " + e.shiftKey + "\n" 
     ); 
    } 
} 

</script> 
</head> 

<body onkeydown="showChar(event);"> 
<p>Press any character key, with or without holding down 
the SHIFT key.<br /></p> 
</body> 
</html> 

Wie kann ich unterscheiden Kapital A von Klein ein in onkeydown Ereignisbehandlungsmethode unterscheiden? Der obige Algorithmus löst denselben keyCode-Wert aus. Ich muss die Großbuchstaben erkennen, wenn sie onkeydown gedrückt werden.Wie Großbuchstaben aus niederen in onkeydown Ereignisbehandlungsmethode

Hinweis: Der Code enthält eine Ausnahme für die Umschalttaste. Andernfalls können keine Großbuchstaben eingegeben werden. BTW, ich brauche onkeydown für meine Studie.

Antwort

6

Es sieht für mich aus, als ob Sie Ihre eigene Frage beantwortet haben. Wenn Sie die SHIFT-Taste sind zu erfassen, können Sie einfach zwischen Groß- und Klein unterscheiden:

if(e.shiftKey){ 
    alert("You pressed a CAPITAL letter with the code " + e.keyCode); 
}else{ 
    alert("You pressed a LOWERCASE letter with the code " + e.keyCode); 
} 

Oder bin ich Missverständnis Ihre Frage?

Update: Großbuchstaben ASCII-Codes können leicht umgesetzt werden Fall ASCII-Codes zu senken um 32 hinzufügen, so alles, was Sie tun müssen, ist dies:

<html> 
<head> 
<title>Test</title> 

<script type="text/javascript"> 

function showChar(e){ 
    if(e.keyCode!=16){ // If the pressed key is anything other than SHIFT 
     if(e.keyCode >= 65 && e.keyCode <= 90){ // If the key is a letter 
      if(e.shiftKey){ // If the SHIFT key is down, return the ASCII code for the capital letter 
       alert("ASCII Code: "+e.keyCode); 
      }else{ // If the SHIFT key is not down, convert to the ASCII code for the lowecase letter 
       alert("ASCII Code: "+(e.keyCode+32)); 
      } 
     }else{ 
      alert("ASCII Code (non-letter): "+e.keyCode); 
     } 
    } 
} 

</script> 
</head> 

<body onkeydown="showChar(event);"> 
<p>Press any character key, with or without holding down 
the SHIFT key.<br /></p> 
</body> 
</html> 

Update 2: Try this:

+0

Aber sollte die keyCode Änderung nicht auch? Ich muss den Unterschied von keyCode oder etwas anderes als Wert erhalten. In beiden Beispielen ist der keyCode identisch. Ich suche einen Weg, der eine andere keyCodes für Großbuchstaben A und Kleinbuchstaben a gedrückt bietet. –

+0

Werfen Sie einen Blick auf das Update meiner Antwort oben. Ich denke, das ist es wonach Sie suchen. – Computerish

+0

Danke das ist ziemlich nah an meiner Not. Aber wie kann ich UTF-8 Unterstützung hinzufügen? Say for capital Ü und smallcase ü löst die Warnung "ASCII Code (non-letter)" aus. Ist es möglich, Unicode-Großbuchstaben in Onkeydown von Kleinbuchstaben zu unterscheiden? –

1

Ich habe ein bisschen nach dieser Frage gesucht, als ich Code schrieb, um ein Eingabeelement (mit dem keyPress-Ereignis) auf Alpha-Zeichen zu beschränken. Ich verwendete "Zeichencodes zwischen 65 und 90" und konnte keine Kleinbuchstaben in das Feld eingeben.

Ich entdeckte schließlich, dass JavaScript ASCII-Codes dafür verwendet, also habe ich gerade "und auch zwischen 97 und 122" und Viola hinzugefügt! Ich kann Groß- und Kleinbuchstaben eingeben. Um zu schreiben:

function alphaOnly(e) { 
    'use strict'; 
    if (!e) { // compensates for IE's key code reporting. 
     e = window.event; 
    } 
    var charCode = (e.which) ? e.which : event.keyCode; 
    if ((charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122)) { 
     return true; 
    } else { 
     return false; 
    } 
} 
0

Neuere und viel sauberer: Verwenden Sie event.key. Keine willkürlichen Zahlencodes mehr!

node.addEventListener('keydown', function(event) { 
    const key = event.key; // "a", "1", "Shift", etc. 
    if (/^[a-z]$/i.test(key)) { // or if (key.length === 1 && /[a-z]/i.test(key)) 
     const isCapital = event.shiftKey; 
    } 
}); 

Mozilla Docs

Supported Browsers

Verwandte Themen