Javascript jQuery ajax表单提交-验证失败时导致多个post/get请求

Javascript jQuery ajax表单提交-验证失败时导致多个post/get请求,javascript,ajax,jquery-plugins,jquery,Javascript,Ajax,Jquery Plugins,Jquery,我有一个问题,如果表单提交(设置为通过AJAX提交)未通过验证,那么下次提交表单时,post请求的数量会增加一倍——这绝对不是我想要的。我正在使用jQuery ValidationEngine插件提交表单并将验证消息绑定到我的字段。下面是我的代码。我认为我的问题可能在于,我正在通过$('.form_container form').attr('action')检索表单操作属性-我必须使用$(this)这样做。attr拾取第一个加载表单的操作attr-但是,当我将新表单加载到页面中时,它无法正确拾

我有一个问题,如果表单提交(设置为通过AJAX提交)未通过验证,那么下次提交表单时,post请求的数量会增加一倍——这绝对不是我想要的。我正在使用jQuery ValidationEngine插件提交表单并将验证消息绑定到我的字段。下面是我的代码。我认为我的问题可能在于,我正在通过$('.form_container form').attr('action')检索表单操作属性-我必须使用$(this)这样做。attr拾取第一个加载表单的操作attr-但是,当我将新表单加载到页面中时,它无法正确拾取新表单的操作,直到我删除$(this)选择器并使用类引用它。有人能看出我在这里做错了什么吗?(注意,我有两个类似的表单处理程序加载到domready上,这也可能是一个问题)


问题是,当您单击两次时,会绑定验证引擎两次。我对validationengine不是很熟悉,但我相信这是你的问题

绑定validationEngine后,您需要确保不再绑定它


编辑

或者这样做:

    $('#eligibility').live("click", function(){
        $.validationEngine.submitForm($(".form_container form"),{
            ajaxSubmit: true,
            ajaxSubmitFile: $('.form_container form').attr('action'),
            success :  function() {
                var url = $('input.next').attr('rel');
                ajaxFormStage(url);
            },
            failure : function() {
            }
        });
        return false;
   });
   $('input.next:not(#eligibility)').live("click", function(){
        $.validationEngine.submitForm($(".form_container form"),{
            ajaxSubmit: true,
            ajaxSubmitFile: $('.form_container form').attr('action'),
            success :  function() {
                var url = $('input.next').attr('rel');
                ajaxFormStage(url);
            },
            failure : function() {
            }
        });
        return false;
  });

啊,好的,我明白了(我想)。因此,我应该在失败回调中解除validationengine的绑定,因为单击事件将在下次尝试提交时再次绑定它-这有意义吗?感谢David的建议,但我目前收到了此错误-“$.validationengine.settings未定义”。只是想弄清楚,因为你的建议似乎比我的建议要干净得多,在失败回调中手动解除validationEngine的绑定看起来validationEngine实际上已经坏了。最终解决了它!增加了美元(“#资格”).die('click');要解除窗体与鼠标的绑定,请单击。
    $('#eligibility').live("click", function(){
        $.validationEngine.submitForm($(".form_container form"),{
            ajaxSubmit: true,
            ajaxSubmitFile: $('.form_container form').attr('action'),
            success :  function() {
                var url = $('input.next').attr('rel');
                ajaxFormStage(url);
            },
            failure : function() {
            }
        });
        return false;
   });
   $('input.next:not(#eligibility)').live("click", function(){
        $.validationEngine.submitForm($(".form_container form"),{
            ajaxSubmit: true,
            ajaxSubmitFile: $('.form_container form').attr('action'),
            success :  function() {
                var url = $('input.next').attr('rel');
                ajaxFormStage(url);
            },
            failure : function() {
            }
        });
        return false;
  });