2017-05-08 63 views
0

我在javascript中编写了一个简单的代码,它应该验证在html表单中输入的电话号码的长度(检查它是否包含10数字 - 就像我在我的国家)。 因此,这里的功能:/operator(或代码的其他部分)似乎没有工作

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)。 在进入循环之前,我已经检查过“tel”变量的值,并且一切正常。 我也试过用“while”代替“for”循环。 所以我得出结论,这是因为“/”运算符不起作用(尽管我仍然不明白它有多可能)或者它与电话类型有关... 那么问题是什么以及如何解决它?

在此先感谢!

+0

你就不能检查号码长度,如:字符串(数字)。长度? – Alex

+0

它使用正则表达式 –

+0

的更好的做法是值真的是一个整数? –

回答

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

也注意到10000000分之123456789不为0 ...

顺便说一句,这是很容易简单地检查tel.length。 ..

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; 
} 
+0

编辑代码。返回值是string.thanks指出它 – bigbounty

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 
     } 
    } 
+1

也值得也没有什么,你可以做''并且称它为一天。甚至可能是''或''...没有JavaScript是必要的这种事情。 –

+0

minLength和maxLength没有为我工作,当我试着用数字类型输入框 –

0

尝试var tel = parseInt(document.LpData.phone.value);代替var tel = document.LpData.phone.value;