用 jQuery/JavaScript 检测数字或字母?

我想使用 if 语句仅当用户键入字母或数字时才运行代码。

我可以利用

if (event.keyCode == 48 || event.keyCode == 49 || event.keyCode == 50 || ...) {
// run code
}

有没有更简单的方法来做到这一点? 也许有些键码不能在所有的网络浏览器工作?

98748 次浏览
if (event.keyCode >= 48 && event.keyCode <= 90) {
// the key pressed was alphanumeric
}

如果你想检查一个字母范围,你可以使用大于或小于:

if (event.keyCode >= 48 && event.keyCode <= 57) {
alert('input was 0-9');
}
if (event.keyCode >= 65 && event.keyCode <= 90) {
alert('input was a-z');
}

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

const input = String.fromCharCode(event.keyCode);


if (/[a-zA-Z0-9-_ ]/.test(input)) {
alert('input was a letter, number, hyphen, underscore or space');
}

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

首先,如果您要这样做,请确保它在 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");
}
};

如果你想检查后退空间,我会使用 keydown事件来代替,并检查 keyCode为8,因为几个浏览器(包括 Chrome)不会为后退空间键触发 keypress事件。

数字验证,对我来说没问题

$(document).ready(function () {
$('.TxtPhone').keypress(function (e) {
var key = e.charCode || e.keyCode || 0;


// only numbers
if (key < 48 || key > 58) {
return false;
}
});
});

你也可以在 onKeyPress事件中使用 charCode:

if (event.charCode > 57 || event.charCode < 48) {
itsNotANumber();
} else {
itsANumber();
}

使用 $.isNumeric(value);返回类型是 boolean

$(document).ready(function () {
return $.isNumeric(event.keyCode);
});

使用正则表达式通过动态过程接受数字或字母。

为特定控件添加 onkeypress事件

onkeypress="javascript:return isNumber(event)"

function numOnly(evt) {
evt = evt || window.event;
var charCode = evt.which || evt.keyCode;
var charStr = String.fromCharCode(charCode);


if (/[0-9]/i.test(charStr)) {
return true;
} else {
return false;
}
}


function Alphanum(evt) {
evt = evt || window.event;
var charCode = evt.which || evt.keyCode;
var charStr = String.fromCharCode(charCode);


if (/[a-z0-9]/i.test(charStr)) {
return true;
} else {
return false;
}
}

$('#phone').on('keydown', function(e) {
let key = e.charCode || e.keyCode || 0;


// 32 = space - border of visible and non visible characters - allows us to backspace and use arrows etc
// 127 - delete
if (key > 32 && (key < 48 || key > 58) && key !== 127) {
e.preventDefault();
return false;
}
});

修改了@user4584103的答案,允许我们删除字符,并在输入框中导航和过滤掉每个非数字字符

使用 event.key和现代 JS!

没有数字代码 了。您可以直接检查 key

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
}

您也可以使用一个简单的 regex。 ^$确保1个字符,i忽略大小写

/^[a-z0-9]$/i.test(event.key)

或个别人士:

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

正如@Gibolt 所说,你应该使用 event.key

因为 charCodekeyCodewhich已被弃用。

对于数值:

function validNumeric() {
var charCode = event.which ? event.which : event.keyCode;
var isNumber = charCode >= 48 && charCode <= 57;


if (isNumber) {
return true;
} else {
return false;
}
}

这里,48到57是数值的范围。

对于字母值:

function validAlphabetic() {
var charCode = event.which ? event.which : event.keyCode;
var isCapitalAlphabet = charCode >= 65 && charCode <= 90;
var isSmallAlphabet = charCode >= 97 && charCode <= 122;


if (isCapitalAlphabet || isSmallAlphabet) {
return true;
} else {
return false;
}
}

在这里,65到90是大写字母(A-Z)的范围,以及

97到122是小字母(a-z)的范围。

在使用 <input><textarea>时,可以使用 input事件来检测字母和数字。

<input><textarea>值发生变化时,此事件将触发,因此不需要担心 AltShift、箭头等键。甚至更多-如果你使用鼠标切割文本的一部分,事件触发以及。

var element = document.getElementById('search');


element.addEventListener('input',function(e){


console.log(element.value);


});
<input id="search" type="text" placeholder="Search" autocomplete="off">

您只需像下面这样在输入字段中添加您的 Html 表单:

...onkeypress ="return /[a-z .@ 0-9]/i.test(event.key)" required accesskey="4"

你不需要任何功能。此验证仅适用于 email字段。不要使用命名或数字。要使用 number,删除 email 正则表达式,如下所示:

...onkeypress ="return /[a-z ]/i.test(event.key)" required accesskey="4"

只限数字:

...onkeypress ="return /[0-9]/i.test(event.key)" required accesskey="4"

别忘了,要为每个输入字段添加自己的值。

<div class="form-group">
<input type="Email" class="form-control " id="EMAILADDRESS" name="EMAILADDRESS" placeholder="Email Address"   autocomplete="false" onkeypress ="return /[a-z .@ 0-9]/i.test(event.key)" required accesskey="4"/>
</div>

一个非常简单,但有用的方法尝试(我需要在一个 keyup 事件,只有字母) , 使用 console.log ()检查,typeOfKey 是一个字符串,因此可以进行比较。 typeOfKey 是(Digit 或 Key)

 let typeOfKey = e.code.slice(0,-1)
if(typeOfKey === 'Key'){
console.log(typeOfKey)
}