数字的javascript验证
有人能告诉我我做错了什么吗。。当我输入10或a时,我没有收到无效号码警报数字的javascript验证,javascript,validation,Javascript,Validation,有人能告诉我我做错了什么吗。。当我输入10或a时,我没有收到无效号码警报 function validateNumeric() { var old_val = document.getElementById("tbNumber").value; var new_val = old_val.replace(/^\s+|\s+$/g,""); var validChars = '0123456789.'; for(var i = 0; i < val.length; i++
function validateNumeric() {
var old_val = document.getElementById("tbNumber").value;
var new_val = old_val.replace(/^\s+|\s+$/g,"");
var validChars = '0123456789.';
for(var i = 0; i < val.length; i++){
if(validChars.indexOf(new_val.charAt(i)) == -1){
alert('Please enter valid number');
return false;
} else {
document.getElementById("tbNumber").value = new_val;
}
}
return true;
}
函数validateEnumeric(){
var old_val=document.getElementById(“tbNumber”).value;
var new_val=old_val.replace(/^\s+|\s+$/g,“);
var validChars='0123456789';
对于(var i=0;i
在for
循环测试中,您引用的是一个变量val
,该变量的长度可能为0
,因此循环将不会执行任何操作,函数将返回true。我猜你的for
循环实际上应该是这样的:
for(var i = 0; i < new_val.length; i++){
...
}
for(变量i=0;i
有一个更简单的解决方案:使用
您的有效字符是数字0-9,包括小数点,对吗?好的,它的正则表达式是\d。因此,这将检查输入的值是否为数字:
(/\d/).test( myValue );
因此,您的代码只需要使用正则表达式,而不是昂贵的循环
function validateNumeric(){
var x = document.getElementById('foo');
var y = x.value.replace(/^\s+|\s+$/g,'');
var DIGITS = (/\d/); // Uppercase because this is a constant value
if (!DIGITS.test( y )){
alert('Please enter a valid number.');
return false;
} else {
x.value = y;
return true;
}
}
重复?你之前问这个问题时,上面的答案有什么问题?我不认为它是重复的-请参阅我的答案.thanx以获取帮助,但是如果有人输入2..2,我如何测试它