编辑:实际上,此修复程序似乎已合并到版本 1.12.0 中,您可以在此处找到它的 CDN 指针:http: //jqueryvalidation.org/
并供参考:
http://ajax.aspnetcdn.com/ajax/jquery.validate/1.12.0/jquery.validate.js
http://ajax.aspnetcdn.com/ajax/jquery.validate/1.12.0/jquery.validate.min.js
http://ajax.aspnetcdn.com/ajax/jquery.validate/1.12.0/additional-methods.js
http://ajax.aspnetcdn.com/ajax/jquery.validate/1.12.0/additional-methods.min.js
在找到上面的解决方案之前,我在下面找到了这段代码,所以我的建议是使用上面引用的 CDN 链接,而不是将下面的代码粘贴到您的 JS 文件中。
现在在 GitHub 上有一个更好的修复(滚动到最底部),我在这里复制了它。 这不是我的工作,写它的 GitHub 用户 sfreytag 似乎不是 SO 贡献者,我只是想将它放入 SO 中,以便其他发现此内容的人不必在 GitHub 上挖掘线程:
jQuery.validator.addMethod("require_from_group", function(value, element, options) {
var validator = this;
var selector = options[1];
var validOrNot = $(selector, element.form).filter(function() {
return validator.elementValue(this);
}).length >= options[0];
if(!$(element).data('being_validated')) {
var fields = $(selector, element.form);
fields.data('being_validated', true);
fields.valid();
$(element.form).valid();
fields.data('being_validated', false);
}
return validOrNot;
}, jQuery.format("Please fill at least {0} of these fields."));
到目前为止,我已经对此进行了有限的测试,但它似乎正在按您的预期工作,所有验证都会发生(而不是像以前那样通过任何非“require_from_group”验证),所以我对此感到满意到目前为止。我只是在我的 JS 代码顶部的验证器声明之后添加了它:
$.validator.setDefaults({
debug: true,
success: "valid"
});
jQuery.validator.addMethod("require_from_group", function(value, element, options) {
var validator = this;
var selector = options[1];
//continuation of code...