1

ASP.NET MVC 2 フレームワークのクライアント側の検証に少し問題があり、誰かが助けてくれることを願っています。

いくつかの状況で、フォームの内容または単一の入力要素だけをリセットできると便利であることがわかり、検証エラーを消す必要があります。これ自体はそれほど難しいことではなく、ここで提供される提案は十分に機能します: ユーザーがフォームを無効にしたときにキャンセル ボタンがクリックされたときに、MVC クライアント側の検証エラーをクリアするにはどうすればよいですか?

問題は、クライアントの検証がトリガーされると、キーが押されるたびに、また入力がフォーカスを失ったときに検証を実行するアグレッシブ モードになることです。この状態もリセットする良い方法はありますか?

4

1 に答える 1

2

reset検証フレームワークが尊重するタイプにリセットボタンを設定することで、私の問題のいくつかを解決できることが判明しました。失敗した送信が発生した場合(無効なフィールドが原因で)、これは機能しません。この場合、次の関数を使用することになりました(selectorjQueryセレクター文字列です):

resetFieldValidation: function (selector) {
    var fields = $(selector);
    fields.removeClass('input-validation-error').addClass('input-validation-valid');
    fields.siblings('.field-validation-error').text('').removeClass('field-validation-error').addClass('field-validation-valid');
    fields.each(function () {
        $(this)[0]['__MVC_HasTextChanged'] = false;
        $(this)[0]['__MVC_HasValidationFired'] = false;
    });
}

関数の最後の部分は、フィールドが変更されておらず、以前に検証エラーをトリガーしていないことを検証フレームワークに示す値を設定します。

于 2010-06-09T14:17:13.370 に答える