如何在Javascript中只允许数字作为输入,为什么';我的代码不工作吗?

如何在Javascript中只允许数字作为输入,为什么';我的代码不工作吗?,javascript,Javascript,我想写一个函数,以防止任何输入以外的数字0-9和返回键,以便用户可以进行更正。我知道这类问题已经被问过好几次了,但为什么我的代码不起作用呢。这和换档键有关吗?为什么我会得到“事件未定义” 在代码段中,我可以阻止字母,但特殊字符,如@,会不断插入。为什么我会得到一个参考错误 //我有两个函数 函数格式ARCPF(事件、控件){ //此行检查从下面定义的函数返回的值 var eNumero=permitirApenasNumeros(event.keyCode); 如果(!eNumero) eve

我想写一个函数,以防止任何输入以外的数字0-9和返回键,以便用户可以进行更正。我知道这类问题已经被问过好几次了,但为什么我的代码不起作用呢。这和换档键有关吗?为什么我会得到“事件未定义”

在代码段中,我可以阻止字母,但特殊字符,如@,会不断插入。为什么我会得到一个参考错误

//我有两个函数
函数格式ARCPF(事件、控件){
//此行检查从下面定义的函数返回的值
var eNumero=permitirApenasNumeros(event.keyCode);
如果(!eNumero)
event.preventDefault();
如果(event.keyCode!=8){
var valor=控制值;
if(valor.length==3){
controle.value=(controle.value+);
}
if(valor.length==7){
controle.value=(controle.value+);
}
if(valor.length==11){
controle.value=(controle.value+“-”);
}
}
}
如果(event.keyCode!=8){
var valor=控制值;
if(valor.length==0){
controle.value=“(”;
}
if(valor.length==2){
controle.value=(controle.value+String.fromCharCode(event.which)+“);
event.preventDefault();
}
if(valor.length==9){
controle.value=(controle.value+“-”);
}
}
函数permitirApenasNumeros(代码){
//检查用户是否键入了数字
var regex=/[0-9]/;
if(regex.test(String.fromCharCode(code))| | code==8){
返回true;
}否则{
返回false;
}
}

中央公积金:

要在
HTML输入元素中只允许
数字
,只需将其
类型设置为
数字


为什么不干脆放弃所有JavaScript并使用:

<input type="text" onkeypress="return event.charCode >= 48 && event.charCode <= 57">

试试HTML5

<input type="number" />

或正则表达式

<input type="text" pattern="^[0-9]*$" />

您的代码格式有很多问题,几乎无法读取,但在我看来,问题在于如果(event.keyCode!=8){
块位于
格式ARCPF
事件侦听器之外,那么您的第二个
块就是问题所在。因为它在
事件
变量之外,所以没有定义它

如果你能正确地格式化你的代码,这将是一件非常简单的事情。如果你愿意的话,你可以使用像这样的工具来完成它。

这应该可以 HTML


JAVASCRIPT

 function isNumber(evt) {
        evt = (evt) ? evt : window.event;
        var charCode = (evt.which) ? evt.which : evt.keyCode;
        if (charCode > 31 && (charCode < 48 || charCode > 57)) {
            return false;
        }
        return true;
    }
函数isNumber(evt){
evt=(evt)?evt:window.event;
var charCode=(evt.which)?evt.which:evt.keyCode;
如果(字符码>31&(字符码<48 | |字符码>57)){
返回false;
}
返回true;
}

这不是使用事件侦听器的方式。只需将
onkeydown=“formatarCPF(事件,此)”
替换为
onkeydown=“formatarCPF”
。你是不是真的想方设法把你的代码格式化得如此糟糕……:)你也可以使用下面的解决方案。Jsfiddle.net/Lm2hS/我一直收到关于我的格式化的批评。我会努力改进它。
 function isNumber(evt) {
        evt = (evt) ? evt : window.event;
        var charCode = (evt.which) ? evt.which : evt.keyCode;
        if (charCode > 31 && (charCode < 48 || charCode > 57)) {
            return false;
        }
        return true;
    }