編集:実際には、この修正がバージョン 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
上記の解決策を見つける前に、以下のコードを見つけたので、以下のコードを JS ファイルに貼り付けるのではなく、上記の CDN リンクを使用することをお勧めします。
現在、GitHub でより適切な修正が行われています(一番下までスクロールしてください)。これをここにコピーしました。 これは私の作品ではなく、これを書いた GitHub ユーザー sfreytag は SO の貢献者ではないようです。これを見つけた他の人が GitHub のスレッドを掘り下げる必要がないように、SO に入れたかっただけです。
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...