我想使用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;
}
}
}
然而它不起作用。有什么想法吗?
答案 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()
(表示不是数字)方法会以更简单的方式为您提供还原结果......
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;