[英]jQuery validation engine required blocks my custom required validator
我有一個帶有2個文本輸入和2個單選按鈕的表單。 一個單選按鈕是客戶希望以后通過紙質郵件進行所有通信時,另一個單選按鈕是客戶希望通過電子郵件進行通信時。
當用戶選擇電子郵件時,則需要用其電子郵件地址填寫輸入文本框之一。 當用戶選擇郵政時,他必須在另一個框中填寫郵政地址。
我為此有一個自定義的jquery驗證引擎功能:
function checkBillRoutePostalAddressConflict(field, rules, i, options){
var fieldValue = field.val();
var accountIdR = field.attr('id').match(/\d+$/);
var radioButton = jQuery('#postalBillsDestination_' + accountIdR);
if(!fieldValue && radioButton.attr("checked")){
alert('options.allrules.checkBillRoutePostalAddressConflict.alertText') // for debugging
return options.allrules.checkBillRoutePostalAddressConflict.alertText;
}
}
驗證程序隨類添加到我的輸入文本字段class="validate[funcCall[checkBillRoutePostalAddressConflict]]"
問題是它不起作用。 顯示調試警報消息,表示條件正確。 如果我將其替換為其他自定義驗證器之一,則一切正常。
有人告訴我,如果您將自定義驗證函數寫入一個空的字段,則不應顯示該消息,因為jQuery希望您使用validate [required]。
如果這是真的,那么有人知道這種方法不是太hacky嗎?
一種選擇是直接使用showPrompt
,但是mabye還有更干凈更好的東西嗎?
謝謝!
元素規則不僅可以是true或false,還可以是一個函數。 該函數可以檢查是否已選中電子郵件復選框,然后返回true(否則返回false):
$('#form').validate({
'rules': {
'email_text_field': {
'required': function() { return $('#email-radio').is(':checked'); }
}
}
});
這里使用默認的required
驗證器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.