2

ページに複数のフォームを配置する必要があるまで、Bootstrap Validator ( http://formvalidation.io/ ) を使用するフォームでコンソール エラーは発生しませんでした。$(form).each() を実行すると、再帰エラーが多すぎます。

    $('form').each(function(){
        var form_id = $(this).attr("id");
        $(this).bootstrapValidator({
            message: 'This value is not valid',
            fields: {
                email: {
                    validators: {
                        notEmpty: {
                            message: 'The email is required and cannot be empty'
                        },
                        emailAddress: {
                            message: 'The input is not a valid email address'
                        }
                    }
                }                   
            }
        }).on('success.form.bv', app.form_handler);
    });

これがjavascript app.form_handlerです:

app.form_handler = function( evt ){
    evt.preventDefault();
    app.$ajax_form = $(evt.target);
    var serialized_data = app.$ajax_form.serialize();
    app.post_ajax( serialized_data );
};

次にpost_ajax関数...

 app.post_ajax = function( serial_data ){
    var post_data = { 
        action     : 'cm_ajax',
        nonce      : cm_ajax.nonce,
        serialized : serial_data,
    };

    $.post( cm_ajax.ajax_url, post_data, app.ajax_response, 'json' )
};
4

2 に答える 2

0

管理者として WordPress にログインしていたため、エラーが発生していました (ページに多くの非表示のフォームがあったことを意味します)。したがって、$(form).each 関数は、標準の Bootstrap マークアップを使用しないすべてのフォームで実行され、エラーを引き起こしました。

バリデーターを実行したいフォームにカスタムクラスを追加することでこれを修正し、次にバリデーターのみを実行する IF 句を追加しました if($(this).hasClass('bootstrapFormClass')){ ... }

これは正常に機能し、現在はバリデーターであり、すべてのフォームが正常に機能します。

于 2015-09-11T14:57:39.903 に答える