0

menu1、menu2、menu3などの名前の選択メニューがもっとあります...

それらはすべて0から10までの値を持っています。デフォルトではすべてが0です。

メニューの少なくとも1つがゼロより大きい値を持っていることをjquery検証プラグインで確認するにはどうすればよいですか?それぞれに異なる名前があるため(同じクラスを付けることはできますが、クラスではなくフォーム名に対してルールを検証できるため、検証プラグインでこれがどのように役立つかわかりません)。

4

1 に答える 1

1

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
    });

});
于 2012-12-13T21:34:09.467 に答える