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