jQuery Ajax发布多次提交

时间:2013-11-27 22:41:26

标签: jquery ajax forms validation post

我无法理解为什么这个表单会发送同一封电子邮件的多个副本(1-8个拷贝)。我已尽力解决问题,但我无法弄明白。

我正在使用jQuery Validation Engine来验证表单,如果它正确验证,我使用jquery.post()来提交表单。

我已经包含了所有代码,只是为了安全起见。但是这里有一些可能无关紧要的东西,比如我在成功发送邮件时在iframe中加载的ppcconversion脚本。

请参阅以下代码:

$(".consult-form form .submit").click(function(){
    $(".consult-form form").validationEngine('attach', {
        promptPosition : "topLeft",
        onValidationComplete: function(contactForm, status){
            if(status==true){
                $(".consult-form form .submit").clone().insertAfter($(this)).attr("disabled","true");
                $(".consult-form form .submit").hide();
                _gaq.push(['_trackPageview', '/web-contact']); // Google Page Tracker
                $.post('/path/to/process.php', $(".consult-form form").serialize(), function(data) {
                    // Add Thank You Message
                    $('.thank-you-message').html(data);
                    // Create IFRAME to page with Adwords Tracking Script
                    function ppcconversion() {
                        var iframe = document.createElement('iframe');
                        iframe.style.width = '0px';
                        iframe.style.height = '0px';
                        document.body.appendChild(iframe);
                        iframe.src = 'http://www.fullurlto.com/conversion-script.php';
                    };
                    ppcconversion();
                });
                return false; // I attempted to add this line to prevent it from submitting multiple times. It didn't work.
                $(".consult-form form").hide();
            }
        }
    });
});

如果您有任何其他详细信息需要更多见解,请告诉我,我会提供给他们。

谢谢!

2 个答案:

答案 0 :(得分:0)

现在,您每次点击.submit

时都会添加新的验证处理程序

而是在ready处理程序

中添加一次验证
$(function() {
    $(".consult-form form").validationEngine('attach', {
        //...
    }
});

答案 1 :(得分:0)

jQuery验证引擎通常在表单提交时触发,因此不需要在提交按钮单击事件上绑定。

坚持将验证结尾附加到表单并正常提交。应该是好的(未经测试)