In meiner HTML-Seite gibt es ein Eingabetextfeld. Ich möchte nur die Zifferntaste und den linken/rechten Pfeil auf der Tastatur eingeben. Ich habe das folgende JavaScript versucht, aber ein Problem gefunden.keyCode-Problem - Die Eingabe des% -Zeichens kann nicht verhindert werden
<input onkeypress="return allowNumberOnly(event)" />
function allowNumberOnly(event) {
event = event || window.event;
var charCode = (event.which) ? event.which : event.keyCode;
//keyCode 48-57 represent the number 0-9
//keyCode 37,39 represent the Left and Right arrow
//keyCode 46 represent the Delete key
//keyCode 8 represent the Backspace key
return charCode == 37 || charCode == 39 || charCode == 46 || charCode == 8
|| (charCode >= 48 && charCode <= 57);
}
Nach diesem Code zu testen, fand ich ein Problem, dass der keyCode von Pfeil links und speziellen Zeichen% ist beide 37. So kann ich nicht vom Benutzer Charakter und lassen Sie den linken Pfeil mittlerweile Eingabe% verhindern. Ich habe keine Ahnung, warum das passieren würde. Ich dachte immer, dass keyCode für jede Taste auf der Tastatur eindeutig sein sollte. Ich dachte an onkeyup statt onkeypress. Mit der Onkeyup-Funktion kann der Benutzer jedoch zuerst das ungültige Zeichen eingeben und anschließend den eingegebenen Text entfernen. Dieses Verhalten ist nicht was ich will. Jeder Vorschlag wäre willkommen.
Ich debuggte den Code in FireFox und fand den folgenden Unterschied.
1. Wenn% eingeben, event.which == 37 und event.keyCode == 0
2. Wenn eingeben Pfeil nach links, event.which == 0 und event.keyCode == 37
Das Problem scheint durch die Verwendung dieses Unterschieds gelöst zu werden. Ich werde weiterhin in IE und Chrome versuchen.
Fiddle: http://jsfiddle.net/gW6k3/ – JJJ