数字的javascript验证

时间:2011-06-03 19:05:07

标签: javascript validation

有人可以告诉我这里我做错了什么..当我输入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; 
}

2 个答案:

答案 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;
    }
}