我有一个包含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;
}
}
Validator与类一起添加到我的输入文本字段class="validate[funcCall[checkBillRoutePostalAddressConflict]]"
问题是它不起作用。显示调试警报消息,表示条件正确。如果我用我的其他自定义验证器替换它,那么一切都运行良好。
有人告诉我,如果你把一个自定义验证函数写入一个空的字段,那么就不会显示该消息,因为jQuery要你使用validate [required]。
如果这是真的,有人知道某种不太苛刻的解决方法吗?
一种选择是直接使用showPrompt
,但mabye有更清洁,更好的东西吗?
谢谢!
答案 0 :(得分:0)
元素规则不仅可以是真或假,还可以是函数。该函数可以检查是否选中了email复选框并返回true(否则为false):
$('#form').validate({
'rules': {
'email_text_field': {
'required': function() { return $('#email-radio').is(':checked'); }
}
}
});
此处使用默认required
验证程序。