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