我在javascript中编写了一个简单的代码,用于验证以html格式输入的电话号码的长度(检查它是否包含10位数字 - 就像在我的国家/地区一样)。 所以这里的功能是:
function check_tel(){
var tel=document.LpData.phone.value;
var i=0;
for(;i<10;i++){
tel/=10;
if(tel==0){
alert("unvaild phone number- too short");
return false;
}
}
if(tel>0){
alert("unvaild phone number- too long");
return false;
}
return true;
}
但总是输出数字太长(i> 10)。 我已经检查了&#34; tel&#34;的值在进入循环之前变量,一切都是正确的。 我也尝试了#34;而#34;而不是&#34;为&#34;环。 所以我得出结论是因为&#34; /&#34;运营商没有工作(虽然我仍然不了解它是如何可能的)或者它与电话类型有关... 那么问题是什么以及如何解决它?
提前致谢!
答案 0 :(得分:0)
可能的解决方法是
function check_tel()
{
var tel=document.LpData.phone.value;
if(tell.length == 0 || tell.length > 10){
alert("invalid phone number");
return false;
}
return true;
}
答案 1 :(得分:0)
执行这些操作的最佳做法是使用正则表达式(正则表达式)。
/^\d{10}$/
是一个JS正则表达式,用于检查该数字是否为10位数字。
function check_tel()
{
var tel = document.LpData.phone.value;
var teleRegex =/^\d{10}$/;
if(!teleRegex.test(tel)){
alert("invalid phone number")
}
else{
//do your thing
}
}
答案 2 :(得分:0)
每个输入值始终是一个字符串。在字符串上使用除法运算符不是您想要的。所以你可以将phonenumber转换为int:
function check_tel(){
var tel=parseInt(document.LpData.phone.value,10)||0;
for(var i=0;i<10;i++){
tel/=10;
if(tel<1){
alert("unvaild phone number- too short");
return false;
}
}
tel/=10;
if(tel>1){
alert("unvaild phone number- too long");
return false;
}
return true;
}
另请注意,123456789/10000000不是0 ...
顺便说一句,简单地检查tel.length ...