0

我正在使用来自以下的 JQuery 验证器: http ://bassistance.de/jquery-plugins/jquery-plugin-validation/ 的 JQuery 验证器

我已经编写了我需要的 JQuery,它可以正确验证,但是我的提交函数的最后一部分无法正常工作。

$("#commentForm").validate({
    rules: {
        email_options_name: {
            required: true
        },
        email_options_company: {
            required: true
        },
        email_options_country: {
            required: true
        },
        email_option_email: {
            required: true,
            email: true
        },
        check_options: {
            required: true,
            minlength: 1
        }
    },      
});

$("#commentForm").submit(function(){

    var valid = $("#commentForm").valid();
    if (valid) {
                $.post('scripts/process_email_initial_form.php',$(this).serialize(), function(o) {
                    location.reload();
                }, 'json');
            } else {
                $('.full-error').show();
            }

                return false;
});

$.extend($.validator.messages, {
            required: "!",
            email: "!"
});

}

当提交有效时,脚本process_email_initial_form.php被调用并正确处理(从查看萤火虫),如果不是,则显示 div。问题是当脚本完成运行时location.reload();不会调用。理想情况下,我想指向成功页面,但这也不起作用。

我试图在末尾放置一个 php 标头函数,process_email_initial_form.php但这也不起作用。

任何帮助深表感谢。

4

3 回答 3

3

根据docs, submitHandler 回调是“验证后通过 Ajax 提交表单的正确位置。”

$("#commentForm").validate({
    rules: {
        // your rules here
    },
    submitHandler: function(form) {
       // example below uses the 'form' plugin
       // http://www.malsup.com/jquery/form/#api
       $(form).ajaxSubmit({
            success: function(){
                window.location.href="newPage.php"
            }
       });
    }      
});
于 2013-05-21T12:11:14.993 回答
0

您只检查了表格是否有效。通过检查这将仅返回布尔值,它不会设置错误消息。您需要在显示之前将错误分配给 $('.full-error') 。

尝试

$("#commentForm").validate();
于 2013-05-21T10:01:59.177 回答
0

您是否尝试过使用done事件?

$.post(
    'scripts/process_email_initial_form.php',
    $(this).serialize(), 
    function(o) {
       console.log('success');
    },
    'json'
).done(function(o){
    window.location.replace("success.php");
});

ajax 页面中的 PHP 标头不会将当前页面重定向到成功页面。它只会使您的 ajax 页面重定向到定义的标题。

window.location.replace您可以尝试使用 jquery 提交表单,而不是使用。

$("#commentForm").submit(function(){
    var valid = $("#commentForm").valid();
    if (valid) {
        $.post(
        'scripts/process_email_initial_form.php',
        $(this).serialize(),
        function(o) {
            console.log('success');
        },
        'json')
        .done(function(o) {
            $(this).attr('action', 'success.php');
            return true;
        });
    } else {
        $('.full-error').show();
        return false;
    }
});

或者

$("#commentForm").submit(function(){
    var valid = $("#commentForm").valid();
    if (valid) {
        $.post(
        'scripts/process_email_initial_form.php',
        $(this).serialize(),
        function(o) {
            $(this).attr('action', 'success.php');
            return true;
        },
        'json');
    } else {
        $('.full-error').show();
        return false;
    }
});
于 2013-05-21T10:17:06.740 回答