Finne tall eller bokstaver med jquery/javascript?

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)