【问题标题】:jQuery phone number format check without validation plug-injQuery电话号码格式检查无验证插件
【发布时间】:2014-09-03 19:19:16
【问题描述】:
有人知道如何在不使用验证插件的情况下编写简单的美国格式电话号码检查器吗?
到目前为止,我有类似的东西,但我似乎无法让它工作。
if($(this).hasClass('phoneNum')) {
var phone_number = $(this.value).replace(/\s+/g, '');
if(phone_number.length > 9 && phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/)) {
//..........do stuff
}
}
【问题讨论】:
标签:
jquery
regex
validation
format
phone-number
【解决方案1】:
我认为你的问题是:
var phone_number = $(this.value).replace(/\s+/g, '');
应该是:
var phone_number = $(this).val().replace(/\s+/g, '');
可能还有另一个问题,但这会立即跳出来给我。
【解决方案2】:
MadTurki 您是对的,但 j08691 感谢您将我引导到可以更好地回答这个问题的帖子。我最终选择了以下方法,效果很好!
if($(this).hasClass('phoneNum')){
var error = 1;
var hasError = false;
var $this = $(this);
var regex1 = /^([2-9]{1}\d{2})([2-9]{1}\d{2})\d{4}$/;
phone = $(this).val();
phone = phone.replace(/[^0-9]/g,'');
if(!regex1.test(phone)){
isValid = false;
$this.css('background-color','#FF7575');
}
else{
area = phone.substring(0,3);
prefix = phone.substring(3,6);
line = phone.substring(6);
$this.val('(' + area + ') ' + prefix + '-' + line);
$this.css('background-color','#A7E9A7');
}
}