这是我对rocket hazmat答案的破解,试图解决其他定义字段也需要验证的问题,但在成功填充一个字段时将所有字段标记为有效。
jQuery.validator.addMethod("require_from_group", function(value, element, options){
var numberRequired = options[0],
selector = options[1],
$fields = $(selector, element.form),
validOrNot = $fields.filter(function() {
return $(this).val();
}).length >= numberRequired,
validator = this;
if(!$(element).data('being_validated')) {
$fields.data('being_validated', true).each(function(){
validator.valid(this);
}).data('being_validated', false);
}
if (validOrNot) {
$(selector).each(function() {
$(this).removeClass('error');
$('label.error[for='+$(this).attr('id')+']').remove();
});
}
return validOrNot;
}, jQuery.format("Please fill out at least {0} of these fields."));
现在唯一剩下的问题是边的情况,字段是空的,然后填充,然后再次空…在这种情况下,错误将应用于单个字段而不是组。但这似乎不太可能以任何频率发生,在这种情况下,技术上仍然有效。