2017-05-08 4 views
0

javascriptで、html形式で入力された電話番号の長さを検証するはずの単純なコードを書きました。それは私の国にあるように)。/演算子(またはコードの他の部分)は動作していないようです

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"変数の値がループに入る前にチェックされていて、すべて正しいです。 私はまた、 "for"ループの代わりに "while"を使って試しました。 だから私はそれが "/"演算子は(まだ私はそれが可能な方法を理解していないが動作しないため、またはそれは何かが電話の種類と関係があると結論した... だから問題とは何ですか?どのようにそれを修正するには?

ありがとうございます!

+0

を試してみてください? – Alex

+0

正規表現 –

+0

を使用する方が実際には値は本当に整数ですか? –

答えて

0

すべての入力値は常に文字列です。文字列にdivide演算子を使用することは、あなたが望むものではありません。だから、intにPHONENUMBERを変換することがあります。

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をチェックする方がはるかに簡単です。文字列(番号).LENGTH ..

0

可能な回避策は、これらの事を行うためのベストプラクティスは、正規表現(regex)を使用することです

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}$/は、数字が10桁の数字かどうかを確認するJS正規表現です。

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

''を実行して1日と呼ぶだけの価値はありません。たぶん ''または 'この種のものにはJavaScriptは必要ありません。 –

+0

minLengthとmaxLengthは私のために働いていませんでした。数字入力ボックス –

0

はあなただけのような数の長さをチェックすることはできませんvar tel = parseInt(document.LpData.phone.value);代わりのvar tel = document.LpData.phone.value;

関連する問題