【问题标题】:javascript validation for numbers数字的javascript验证
【发布时间】:2011-06-03 19:05:07
【问题描述】:

谁能告诉我我在这里做错了什么..当我输入 1 1 0r 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; 
}

【问题讨论】:

标签: javascript validation


【解决方案1】:

在您的for 循环测试中,您引用了一个变量val,它可能返回为具有0 的长度,因此您的循环将永远不会执行任何操作,并且该函数将简单地返回true。我猜你的 for 循环实际上应该是这样的:

for(var i = 0; i < new_val.length; i++){
    ...
}

【讨论】:

    【解决方案2】:

    有一个更简单的解决方案:使用regular expression

    您的有效字符是数字 0 -9,包括小数点,对吗?好吧,正则表达式是 \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;
        }
    }

    【讨论】:

    • 感谢帮助,但如果有人输入 2..2,我该如何测试
    猜你喜欢
    • 2012-05-29
    • 2011-01-30
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 2014-12-15
    相关资源
    最近更新 更多