JavaScript Key-Codes
Arbeite ich mit einer JavaScript-routine, die ich nicht geschrieben habe. Es wird aufgerufen, aus einem Textfeld onkeydown
- Attribut, um zu verhindern, dass unerwünschte Tastenanschläge.
Das erste argument ist offensichtlich nicht verwendet. Das zweite argument ist eine Liste von Zeichen, die erlaubt sein sollte.
function RestrictChars(evt, chars) {
var key;
var keychar;
if (window.event)
key = window.event.keyCode;
else if (e)
key = e.which;
else
return true;
keychar = String.fromCharCode(key);
if ((key == null) || (key == 0) || (key == 8) ||
(key == 9) || (key == 13) || (key == 27))
//Control key
return true;
else if (((chars).indexOf(keychar) > -1))
return true;
else
return false;
}
Dies scheint zu funktionieren für alpha-numerische Zeichen. Allerdings werden die Zeichen wie .
und /
Ursache dieser Funktion zurück false
- auch wenn diese Zeichen enthalten sind die chars
parameter. Zum Beispiel, wenn die .
Taste gedrückt wird, wird key
gesetzt ist auf 190, und keychar
festgelegt wird, um die "3/4" - Zeichen.
Kann jeder sehen, wie dies gemeint war, um zu arbeiten und/oder warum nicht? Ich weiß nicht genug über JavaScript zu sehen, was er zu tun versucht.
InformationsquelleAutor Jonathan Wood | 2011-06-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind zwei Dinge falsch: Erstens, wenn Sie analysieren, welche Zeichen eingegeben wurde, müssen Sie die
keypress
Veranstaltung stattkeydown
denn das ist die einzige Veranstaltung, die Ihnen sagt, etwas verlässliches über den tatsächlichen Charakter eingegeben. Für (viel) mehr detail über diese und JavaScript-wichtige Ereignisse im Allgemeinen, siehe http://unixpapa.com/js/key.html. Zweitens gibt es Verweise auf eine variable namense
was nicht (sollte aber) korrespondieren mit denevt
parameter.Hier ist ein umschreiben, vorausgesetzt, Sie haben eine variable namens
textBox
bezieht sich auf die text-input-element.jsFiddle: http://jsfiddle.net/9DZwL/
Code:
||
tun? (Mit meinem hintergrund,||
ist logisch ODER, aber, die nicht scheint Sinn zu machen hier.)Ich habe gerade ein bisschen zu viel mit steuerzeichen.
||
in JavaScript liefert den ersten Operanden, wenn das "truthy" (D. H. zwingt, Booleantrue
) und der zweite operand ist anders, daher kann verwendet werden als eine Verknüpfung in bedingte Zuweisung.JavaScript key-events sind ein einziges Chaos. Ich schlage vor, dem Lesen der Seite, auf welche verwiesen in meiner Antwort (weit überlegen den quirksmode Seite, IMO) oder meine kürzere Zusammenfassung hier: stackoverflow.com/questions/4285627/... und dann sehen, wenn Sie denken, dass meine Antwort falsch ist.
Ich skizzierte zwei Gründe, warum es nicht funktioniert: Erstens, es ist das falsche Ereignis, und zweitens, es gibt eine falsche variable. Zugegeben, ich habe nicht auf das ein, wofür der code ist, der versucht zu tun, aber ich einen link zu einer Ressource, das erklärt im detail, wie genau JavaScript key-events funktionieren.
Holz:
||
ist ja logisch ODER. Der code in der erstenif
Zweig sagt, "wenn der Schlüssel gleich null ODER key ist gleich 0 oder". Bezüglich deiner Frage, backspace, es ist ausdrücklich Teil des Tests mitkey == 8
(die Rücktaste;9
ist Registerkarte13
ist Sie die EINGABETASTE (oder return), und27
ist die Flucht.InformationsquelleAutor Tim Down
Ich bin kein JS Mensch, aber... ich kann erklären, wie es funktionieren sollte; ich weiß nicht, warum Sie immer die Werte, die Sie für die Tasten, die Sie erwähnt, aber.
Diese überprüft, um zu sehen, ob der Schlüssel eine druckbare Zeichen (Buchstaben, Satzzeichen, etc.)
Den oben prüft, ob der Schlüssel null ist ODER (
||
)` 0 oder 8 (backspace) oder 9 (tab) oder 13 (0x0D, oder ENTER) oder 27 (0x1B oder FLUCHT) - es ist genau das Boolesche Ergebnis Sie erwarten würde: WENN <thiscondition> oder <thatcondition> oder <anothercondition> oder ...Diese überprüft, um zu sehen, ob die
keychar
ist in der Zeichenfolge übergeben, wie diechars
parameterInformationsquelleAutor Ken White