簡體   English   中英

jQuery驗證引擎必需阻止了我的自定義必需驗證器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM