用jquery/javascript检测数字或字母?

ajs*_*sie 61 javascript jquery

我想只在用户输入字母或数字时才使用if语句来运行代码.

我可以用

 if(event.keyCode == 48 || event.keyCode == 49 || event.keyCode == 50..) {
       // run code
 }
Run Code Online (Sandbox Code Playgroud)

有更简单的方法吗?也许某些密钥代码在所有Web浏览器中都不起作用?

And*_*y E 130

如果要检查一系列字母,可以使用大于和小于:

if (event.keyCode >= 48 && event.keyCode <= 57)
    alert("input was 0-9");
if (event.keyCode >= 65 && event.keyCode <= 90)
    alert("input was a-z");
Run Code Online (Sandbox Code Playgroud)

要进行更动态的检查,请使用正则表达式:

var inp = String.fromCharCode(event.keyCode);
if (/[a-zA-Z0-9-_ ]/.test(inp))
    alert("input was a letter, number, hyphen, underscore or space");
Run Code Online (Sandbox Code Playgroud)

请参阅该属性的MDC文档,该文档keyCode解释了该which属性与属性之间的区别以及它们适用于哪些事件.

  • 请注意,这必须在`keypress`事件而不是`keydown`事件中完成. (6认同)
  • 不要忘记数字键盘:**(event.keyCode> = 96 && event.keyCode <= 105)**= P (6认同)
  • 这个答案现在已被**弃用**。请参阅@Gibolt 答案 (2认同)

Tim*_*own 24

首先,如果您这样做,请确保它在keypress事件中,这是您可以可靠地获取有关用户键入的字符的信息的唯一事件.然后我会使用Andy E建议的方法:

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");
   }
};
Run Code Online (Sandbox Code Playgroud)

如果你想检查退格,我会使用该keydown事件并检查keyCode8,因为几个浏览器(包括Chrome)不会keypress为退格键触发事件.


Gib*_*olt 18

使用event.key和现代JS!

没有数字代码了.你可以直接检查密钥.

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
}
Run Code Online (Sandbox Code Playgroud)

你也可以使用一个简单的正则表达式.^$确保1个字符,i忽略大小写

/^[a-z0-9]$/i.test(event.key)
Run Code Online (Sandbox Code Playgroud)

或单独:

const isLetter = /^[a-z]$/i.test(event.key)
const isNumber = /^[0-9]$/i.test(event.key)
Run Code Online (Sandbox Code Playgroud)

  • 这是错误的!`(key &gt;= "a" &amp;&amp; key &lt;= "z")` 几乎对任何事情都会返回 `true`(例如当 key = `Insert` 时)。与 `/[az]/i.test('Insert')` 相同 (2认同)
  • 你错过了一个`长度!== 1`检查.修正了正则表达式 (2认同)

Dou*_*aan 7

if(event.keyCode >= 48 && event.keyCode <= 90) {
    //the key pressed was alphanumeric
}
Run Code Online (Sandbox Code Playgroud)