menu1、menu2、menu3などの名前の選択メニューがもっとあります...
それらはすべて0から10までの値を持っています。デフォルトではすべてが0です。
メニューの少なくとも1つがゼロより大きい値を持っていることをjquery検証プラグインで確認するにはどうすればよいですか?それぞれに異なる名前があるため(同じクラスを付けることはできますが、クラスではなくフォーム名に対してルールを検証できるため、検証プラグインでこれがどのように役立つかわかりません)。
menu1、menu2、menu3などの名前の選択メニューがもっとあります...
それらはすべて0から10までの値を持っています。デフォルトではすべてが0です。
メニューの少なくとも1つがゼロより大きい値を持っていることをjquery検証プラグインで確認するにはどうすればよいですか?それぞれに異なる名前があるため(同じクラスを付けることはできますが、クラスではなくフォーム名に対してルールを検証できるため、検証プラグインでこれがどのように役立つかわかりません)。
1つの解決策は、カスタムルールを作成することです。
私はこの答えを適応させ、 mulitselectと呼ばれるカスタムルールを追加しました。これにより、値が0より大きい場合、最初のドロップダウンリストにエラーが追加さ れます。jsfiddleのデモを確認してください。
note1これは現在、フォーム内のすべての選択リストに適用されます。セレクターを変更して、クラスまたはその他の方法で特定の選択リストに制限します。
注2無効なフォームが送信された後にonclick関数を追加しました。これをオプションに追加すると、検証が少し「熱心」になりすぎたためです。
jsは次のとおりです
$(function () {
$.validator.addMethod("multiselect", function (value, element) {
var countValid = $('select').filter(function () {
return $(this).val() > 0;
}).length;
if (countValid === 0 && $('select:first')[0] === element) {
return false;
}
else {
return true;
}
}, "please select at least one of the menus");
$('select').addClass("multiselect");
$('form').bind("invalid-form", function () {
$('form').validate().settings.onclick = function () { $("form").valid() };
}).validate({
debug: true
});
});