私はjQuery 1.7.2でMVC 3を使用しており、クライアント側とサーバー側にカスタム検証を実装して、チェックボックスがオンになっている場合に特定のテキストエリアにテキストがあることを検証しました。
目立たない検証を実装するためのクライアント側のコードは次のようになります。
$.validator.addMethod("requiredif", function (value, element, params) {
if (value) {
var id = '#' + params["otherproperty"];
var control = $(id);
if (control.val() == '') {
return false;
}
}
return $.validator.methods.required.call(this, value, element, params);
});
$.validator.unobtrusive.adapters.add("requiredif", ["otherproperty"], function(options) {
options.rules["requiredif"] = options.params;
options.messages["requiredif"] = options.message;
});
私の問題は、後で戻ってチェックボックスのチェックを外した場合 (つまり、テキストが不要になった場合) に検証が起動しても、検証メッセージが表示されたままになり、検証がクリアされないことです。
検証をクリアするために次のことを試しました。
$('#Dashboard').on('change', '#Damaged', null, function () {
var validator = $('#Gridform').validate();
validator.resetForm();
});
しかし、これは何の違いもありません。
私が望むのは、検証が標準の検証と同じように機能することです。つまり、チェックボックスのチェックを外すか、テキストエリアにコンテンツを入力すると、検証がクリア/リセットされます。