[英]jQuery Validate ignore custom validation rule if no value
我正在使用jQuery Validator插件。 一切工作正常,我想作最后的調整。 我只是沒有運氣找到正確的組合。
我有一個文本輸入,稱為“電話”。 如果未輸入任何值,則我想忽略所有規則-不理會輸入內容。 當前,如果我集中精力,然后集中精力(不輸入值),則輸入將得到驗證,並且我的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);
}
而不是檢查它是否為空,請使用this.optional(element)
。 它只是使該字段可選。 換句話說,如果您將其保留為空白,則根本不會對其進行評估。
$.validator.addMethod('hasValidPhoneNumber', function(value, element) {
if (this.optional(element) || value.replace(/ /g, '') === '(###)###-####') {
return true;
}
else {
return isValidPhoneNumber(value); //
}
}, messages.invalidPhoneNumber);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.