2015-09-27 64 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

为什么我测试它,它的工作好什么它的问题??! –