Hvis du vil sjekke en rekke bokstaver, kan du bruke større enn og mindre enn:
if (event.keyCode >= 48 && event.keyCode <= 57)
alert("input was 0-9");
if (event.keyCode >= 65 && event.keyCode <= 90)
alert("input was a-z");
For en mer dynamisk sjekk, bruk et regulært uttrykk:
var inp = String.fromCharCode(event.keyCode);
if (/[a-zA-Z0-9-_ ]/.test(inp))
alert("input was a letter, number, hyphen, underscore or space");
Se MDC-dokumentasjonen for keyCode
egenskap, som forklarer forskjellen mellom det og which
eiendom og hvilke arrangementer de gjelder.
Først, hvis du gjør dette, sørg for at det er i keypress
hendelse, som er den eneste hendelsen du pålitelig kan få informasjon om tegnet brukeren har skrevet for. Da ville jeg brukt tilnærmingen Andy E foreslo:
document.onkeypress = function(evt) {
evt = evt || window.event;
var charCode = evt.which || evt.keyCode;
var charStr = String.fromCharCode(charCode);
if (/[a-z0-9]/i.test(charStr)) {
alert("Letter or number typed");
}
};
Hvis du vil se etter backspace, vil jeg bruke keydown
hendelse i stedet og se etter en keyCode
av 8 fordi flere nettlesere (inkludert Chrome) ikke utløser en keypress
hendelse for tilbaketasten.
Bruk event.key
og moderne JS!
Ingen tallkoder lenger. Du kan sjekke nøkkelen direkte.
const key = event.key.toLowerCase();
if (key.length !== 1) {
return;
}
const isLetter = (key >= "a" && key <= "z");
const isNumber = (key >= "0" && key <= "9");
if (isLetter || isNumber) {
// Do something
}
Du kan også bruke et enkelt regulært uttrykk. ^$
sikrer 1 tegn, i
ignorerer store og små bokstaver
/^[a-z0-9]$/i.test(event.key)
eller individuelt:
const isLetter = /^[a-z]$/i.test(event.key)
const isNumber = /^[0-9]$/i.test(event.key)