数字的javascript验证

数字的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++

有人能告诉我我做错了什么吗。。当我输入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++){ 
    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,我如何测试它