0

フォームで JQuery 検証を使用していますが、うまく機能しますが、フォームを「カラーボックス」に入れると、検証が機能しなくなります。

$(document).ready(function(){

    function validateform(){
        $("#edit_contact_form").validate({
            rules : {
                "phone" : {
                    required : true,
                    number : true,
                    minlength : 7
                }
            },
            submitHandler : function(form) {
                alert("form submitted");
                return false;
            }
        });
    }

    $.colorbox({html:$("#edit_contact_div").html()});

    $(document).bind('cbox_complete', function(){
        validateform();
    });

    });

試着も完了イベント!

4

2 に答える 2

0

これを試して

$("body").on('click','cbox_complete', function(){
    validateform();
});

それ以外の

$(document).bind('cbox_complete', function(){
    validateform();
});
于 2013-10-02T06:57:17.947 に答える
0

あなたのコード:

function validateform(){
    $("#edit_contact_form").validate({ ... });
}

$(document).bind('cbox_complete', function(){
    validateform();
});

.validate()メソッドはプラグインの初期メソッドであり、フォームをテストするメソッドではありません。さらに、.validate()はこの初期化のために1 回だけ呼び出され、その後の呼び出しは常に無視されます。そのため、別の関数またはイベント ハンドラー内に配置して複数回呼び出すと、通常、非常に不具合が発生したり、完全に壊れたりします。

.validate()フォームの HTML が構築された直後、通常は DOM の準備が整ったときに 呼び出します。

プラグインは隠しフィールドも自動的に無視します。フォームの HTML はhidden必要になるまで存在しているように見えるため、ignoreこの動作を無効にするオプションを設定してください。

$(document).ready(function(){

    $("#edit_contact_form").validate({
        ignore: [], // allow validation of hidden fields
        // your rules, options, and callbacks
    });

    $.colorbox({html:$("#edit_contact_div").html()});

});
于 2013-10-01T17:07:13.750 に答える