我正在使用jQuery Validator插件。一切都很完美,我想做最后的调整。我只是找不到正确的组合。
我有一个名为“phone”的文本输入。如果没有输入任何值,我想忽略所有规则 - 只留下输入。目前,如果我关注,然后集中注意力(不输入值)输入被验证,我的UI用我的有效标记更新。哪个,没关系,但理想情况下,我想单独留下输入。仅验证是否存在值。我必须在自定义方法中返回true / false,否则它总是无效。
不确定我能做什么。谢谢你的时间!
HTML :
<input id="phone" name="phone" tabindex="7" placeholder="(###) ###-####" type="text" value="">
以下是此输入的规则:
的JavaScript
....
'phone': {
'required': {
'depends': function(element) {
return $('#textOptIn').is(':checked');
}
},
'hasValidPhoneNumber': true
},
....
这是我的自定义方法:
的JavaScript
$.validator.addMethod('hasValidPhoneNumber', function(value, element) {
if (value === '' || value.replace(/ /g, '') === '(###)###-####')
{
return true;
}
else
{
return isValidPhoneNumber(value); //
}
}, messages.invalidPhoneNumber);
function isValidPhoneNumber(phoneNumber) {
var pattern = /^[(]{0,1}[0-9]{3}[)]{0,1}[-\s\.]{0,1}[0-9]{3}[-\s\.]{0,1}[0-9]{4}$/;
return pattern.test(phoneNumber);
}
答案 0 :(得分:0)
不要检查它是否为空,而是使用this.optional(element)
。它只是使字段可选。换句话说,如果您将其留空,则根本不会对其进行评估。
$.validator.addMethod('hasValidPhoneNumber', function(value, element) {
if (this.optional(element) || value.replace(/ /g, '') === '(###)###-####') {
return true;
}
else {
return isValidPhoneNumber(value); //
}
}, messages.invalidPhoneNumber);