カスタム検証では必要ないと思います。チェックボックスがオンになっている場合は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イベントハンドラーを呼び出します)。
それだけだと思います。それがお役に立てば幸いです。