2

こんにちは、私の質問に答えるために時間を割いてくれてありがとう。

検証エンジン内に検証ルールを作成する必要があります。0の値は許可されません(少なくとも1つの要素を選択する必要があることを意味します)。select要素があり、デフォルト(アイテムを選択してください)は必須ではないため、値は0です。ただし、チェックボックスを選択したら、それを必須にする必要があります。0は有効な値であるため、クラス'validate[required]'を追加できません。したがって、私の質問は、0の値をコントローラーに渡さないカスタムルールを作成する方法です。

再度、感謝します

4

1 に答える 1

2

カスタム検証では必要ないと思います。チェックボックスがオンになっている場合はjqueryを使用して必要な属性を追加し、チェックボックスがオフになっている場合はこの属性を削除できます(また、最初のロードの準備ができているドキュメントでもチェックします)。例えば:

$('#myCheckBox').click(function () {
            if ($(this).is(':checked')) {
                $('#myDropDown').removeAttr('required');
            }
            else {
                $('#myDropDown').attr('required', true);
            }
        });

ただし、この場合、<option>値は空である必要があります。<option value>Please select an item</option>(私が知っているように、それはドロップダウンリストの通常の動作です)。その後、jquery検証プラグインは必要な属性を自動的に検証します。

編集

了解しました。カスタム検証を確実に使用する必要がある場合は、次のように実行できます。

1)検証方法を追加します(たとえば、ドキュメントの準備ができています)

 $.validator.addMethod("checkIfNotZero", function (value, element) {
            return this.optional(element) || ($('#checkbox').is(':checked')&&value!=0);
        }, "Please, select value");
 $.validator.addClassRules("mySpecificClass", { checkIfNotZero: true });

2)ドロップダウンリストにマークを付けますclass="mySpecificClass"

3)$('#myDropDown').valid()必要な場所を確認します(または、たとえば$(form).validate()onSubmitイベントハンドラーを呼び出します)。

それだけだと思います。それがお役に立てば幸いです。

于 2012-09-28T10:28:16.620 に答える