有人可以告诉我这里我做错了什么..当我输入1 1 0r时,我没有得到无效的号码警告
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;
}
答案 0 :(得分:2)
在for
循环测试中,您引用的变量val
可能会返回为0
,因此您的循环将永远不会执行任何操作将简单地返回true。我猜你的for
循环应该看起来像:
for(var i = 0; i < new_val.length; i++){
...
}
答案 1 :(得分:0)
有一个更简单的解决方案:使用regular expression。
你的有效字符是数字 0 -9,包括小数点,对吗?那么,RegEx就是 \ d 。因此,这将检查输入的值是否为数字:
(/\d/).test( myValue );
因此,您的代码只需使用RegEx而不是昂贵的循环。
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;
}
}