使用charCodeAt验证JavaScript电话号码

时间:2015-02-06 18:41:09

标签: javascript validation

我想使用JavaScript验证电话号码输入以仅允许输入数字。我不喜欢使用正则表达式,所以我写了一个这样的函数:

function numberTest(){
 for(var i=0;i<phone_number.length;i++){
        if(phone_number.charCodeAt(i) >= 48 && phone_number.charCodeAt(i) <=57){
                    return true;
                    }else{
                    return false;
                    }
                }
            }

然而它不起作用。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

这不起作用,因为它在第一个有效字符后返回true。两个分支都不会超过第一个字符,因此如果找到无效字符,则只需要return。否则,如果您在没有找到无效字符的情况下到达终点,则最终可以return true

类似的东西:

function numberTest(phone_number) {
  for (var i = 0; i < phone_number.length; i++) {
    if (phone_number.charCodeAt(i) < 48 && phone_number.charCodeAt(i) > 57) {
      return false;
    }
  }

  return true;
}

// Test various values
var testData = ["1234", "12ab", "123451234512345", "a1234123", "123123123a"];

var output = document.getElementById("results");
testData.forEach(function(test) {
  var next = document.createElement("li");
  next.textContent = numberTest(test);
});
<ul id="results"></ul>

答案 1 :(得分:0)

isNaN()(表示不是数字)方法会以更简单的方式为您提供还原结果......

&#13;
&#13;
var phone_number = "5511112223";
alert(isNaN(phone_number)); //returns false meaning it is a valid number
								
phone_number = "55aa1g11d12223";
alert(isNaN(phone_number)); //returns true meaning it is not a number
&#13;
&#13;
&#13;