繁体   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