/ operator(或代码的其他部分)似乎不起作用

时间:2017-05-08 10:17:44

标签: javascript html

我在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;运营商没有工作(虽然我仍然不了解它是如何可能的)或者它与电话类型有关... 那么问题是什么以及如何解决它?

提前致谢!

3 个答案:

答案 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 ...