2015-09-27 73 views
0

我使用這個代碼驗證電話號碼:電話驗證工作不正常

<script> 
$("#Phone").keydown(function (e) { 
     // Allow: backspace, delete, tab, escape, enter and . 

     if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 || 
     // Allow: Ctrl+A 
     (e.keyCode == 65 && e.ctrlKey === true) || 
     // Allow: home, end, left, right, down, up 
     (e.keyCode >= 35 && e.keyCode <= 40)) { 



     // let it happen, don't do anything 
     return; 
     } 
     // Ensure that it is a number and stop the keypress 
     if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) { 
     e.preventDefault(); 
     } 
    }); 


     var val = Phone.value 
if (/^\d{11}$/.test(val)) { 
    // value is ok, use it 
} else { 
    alert("Invalid number; must be eleven digits") 
    Phone.focus() 
    return false 
} 
</script> 

我希望用戶僅輸入11位數字,如果不是這樣,它會提醒他們有用戶輸入11位數字並將該值設置爲空。

問題是,當它提醒數字小於11位數字時,它不會將該值設置爲空。

+0

什麼值應該設置爲空?您的代碼將值設置爲null的位置在哪裏? –

+0

我也試了this.value =「」;但它不起作用! – Sean

+0

無論用戶輸入什麼,如果它不是11位數,那麼它應該將該值設置爲無。 – Sean

回答

0

我知道你問一個JS的解決方案,但這個可以用新的屬性在HTML5

<input type="tel" pattern="[0-9]{11}" placeholder="Your 11 digit phone number..." required/> 

小提琴這裏進行:https://jsfiddle.net/7owhrssr/

+0

好,我必須承認,這是一個更輕鬆,更輕鬆的解決方案! 謝謝 – Sean

0

此代碼可以幫助你,原因可能有你正則表達式的問題

 var regex =/^\d+$/; 
if (regex.test(val)) { 
     alert('value is ok, use it'); 
    }else{ 
alert('Invalid number; must be eleven digits'); 
Phone.focus() 
    return false} 
+0

感謝您的努力,但不努力!它沒有工作 – Sean

+0

爲什麼我測試它,它的工作好什麼它的問題??! –