8

現在、プロジェクトで使用するjQuery検証プラグインを設定しています。

デフォルトでは、処理用に自動的に設定されるイベントがいくつかあります。つまり、焦点を合わせたり外したり、すべての入力の火災検証でイベントをキーアップします。送信ボタンがクリックされたときにのみ起動するようにします。

この機能はプラグインに組み込まれているようで、これを行うのは困難です(プラグインコードを変更せずに、やりたいことではありません)。

プラグインコードのプロトタイプメソッドでeventDelegate関数呼び出しを見つけました。

        $(this.currentForm)
            .validateDelegate(":text, :password, :file, select, textarea", "focusin focusout keyup", delegate)
            .validateDelegate(":radio, :checkbox, select, option", "click", delegate);

プラグインからこれらの行を削除すると、結果が得られますが、これを実現するには、プラグインの外部で何かを実行したいと思います。

誰か助けてくれませんか?詳細が必要な場合はお知らせください。私はほとんど成功せずにグーグルを検索しました。

ありがとう

EDIT: I am basically trying to validate the form Only when the submit event is fired. By default, the plug-in validates every time focus is lost in an input control.

4

1 に答える 1

8

答えが見つかりました。これは、validateメソッドのオプションの一部として(非表示になっていますか?)離れていました。

このページのフォーカスアウトなどのオプションを参照してください:http: //docs.jquery.com/Plugins/Validation/validate#options

これはfalseに設定できます。

これが私のバリデーターを設定する私のコードです(うまくいけば、他の人がこれが役立つと思うでしょう):

$(document).ready(function() {
    $("form").each(function() {
        $(this).validate({
            validateDelegate: function() { },
            onsubmit: true,
            onkeydown: false,
            onkeyup: false,
            onfocusin: false,
            onfocusout: false,

            errorContainer: "#PanelError",
            errorLabelContainer: "#PanelError ul",
            wrapper: "li",
            ignoreTitle: true,
            errorClass: "Error",

            highlight: function(element, errorClass, validClass) {
                $(element).addClass(errorClass).removeClass(validClass);
                $(element.form).find("#" + element.id)
                        .addClass(errorClass);
            },
            unhighlight: function(element, errorClass, validClass) {
                $(element).removeClass(errorClass).addClass(validClass);
                $(element.form).find("#" + element.id)
                        .removeClass(errorClass);
            }
        });
    });
});
于 2010-05-04T05:56:23.930 に答える