Javascript 如何检查表单字段上按下的键是否为数字(0-9)?

Javascript 如何检查表单字段上按下的键是否为数字(0-9)?,javascript,dom-events,Javascript,Dom Events,我在JavaScript中的表单字段上使用了onkeyup事件,我想检查按键是否是数字,即0-9,这样我就可以对输入进行处理 <input type="text" onkeyup="" /> 我需要使用正则表达式吗?请参见以下内容: 见此: 函数displayunicode(e){ var unicode=e.keyCode?e.keyCode:e.charCode 如果unicode>=48&&unicode我使用以下函数检查

我在JavaScript中的表单字段上使用了
onkeyup
事件,我想检查按键是否是数字,即0-9,这样我就可以对输入进行处理

<input type="text" onkeyup="" />

我需要使用正则表达式吗?

请参见以下内容:

见此:


函数displayunicode(e){
var unicode=e.keyCode?e.keyCode:e.charCode

如果unicode>=48&&unicode我使用以下函数检查给定字符串是否为数字

// Validate Numeric inputs
function isNumber(o) {
    return o == '' || !isNaN(o - 0);
}
假设keyup或keydown事件上的键代码位于keyCode变量中:

var keyCode = e.keyCode || e.which;
if (keyCode >= 96 && keyCode <= 105) {
        // Numpad keys
        keyCode -= 48;
}
console.log(isNumber(String.fromCharCode(keyCode)));
var-keyCode=e.keyCode | e.which;

如果(keyCode>=96&&keyCode使用
event.key
获取实际值。要检查整数是否为有限值,只需使用
isFinite

input.addEventListener("keydown", function(event) {
    const isNumber = isFinite(event.key);
});
其他选择:

const isNumber = /^[0-9]$/i.test(event.key)
一个更简单的HTML解决方案是使用
number
类型输入。它仅限于数字(某种类型)


仅允许0-9,其他字母将被吞没

$('#id').keypress(function (e) {
            var validkeys = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'];
            if (validkeys.indexOf(e.key) < 0)
                return false;
        });
$('#id')。按键(功能(e){
var validkeys=['1','2','3','4','5','6','7','8','9','0'];
if(有效索引)(e.key)<0)
返回false;
});

+1用于将用户重定向到早期的stackoverflow条目。这些条目取决于jQuery。可能应该是注释,而不是答案。这不准确,您还必须插入数字。很有趣。我看到了对
e.which
e.keyCode
等的引用。但这是我第一次看到有人说
e.key
,对我来说这似乎是最好的答案…使用它有任何缺点吗?记住,isFinite是ES6功能和KeyboardEvent.key还没有完全支持。还要记住,
isFinite
对于'4.6'和
null
之类的值将是
true
。这在按键事件中不是一个真正的问题(您可以一次评估一个字符),但有时根据实现而不是目的使用函数是危险的。请注意,
isFinite
对于空格键按下返回true。解决方案是
if(!isFinite(e.key)| | e.key==“”)e.preventDefault()
。不可用的解决方案,因为您无法使用箭头移动输入,或使用“删除”编辑输入。
<input type="number">
string.replace(/[^0-9]/g,'');
$('#id').keypress(function (e) {
            var validkeys = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'];
            if (validkeys.indexOf(e.key) < 0)
                return false;
        });