2014-05-16 51 views
1

我正在使用jQuery验证器和jQuery 1.8.3。出于某种原因,我的表单被提交了两次,导致错误。这是代码:jQuery验证提交表单两次

someNameSpace.myValidateFunction = function(){ 
    $('#myForm').validate({ 
     submitHandler: function(){ 
      mySubmitCallBackFunction(); 
     }, 
    }); 
    return false; 
}; 

someNameSpace.myValidateFunction(); 
$(document).on('click', '#myFormSubmitButton', function(){ 
    $('#myForm').submit(); 
}); 

任何想法为什么表单提交两次?表单按钮不是输入提交,而是一个<button>元素(在这种情况下是需要的)。

+0

您形式的HTML PLZ放在这里? –

+0

'mySubmitCallBackFunction()'做了什么?你能告诉我们代码吗?我怀疑你是否需要下面的代码:'$(document).on('click','#myFormSubmitButton',function(){''myForm')。submit(); });'看起来像成为你第二次提交的人。点击提交按钮应该触发应该通过submitHandler处理提交的验证器。 – PeterKA

回答

2

您的表单提交两次,因为:

  • 你叫$('#myForm').submit()
  • 你点击提交按钮,这也触发形式事件。 注意:对,如果是在一个形式,也将触发点击窗体事件

所以,我认为你必须在你的点击方法添加return false防止表单提交,当你点击提交按钮。现在,只有$('#myForm').submit();将提交表单:

someNameSpace.myValidateFunction = function(){ 
    $('#myForm').validate({ 
     submitHandler: function(){ 
      mySubmitCallBackFunction(); 
     }, 
    }); 
    return false; 
}; 

someNameSpace.myValidateFunction(); 
$(document).on('click', '#myFormSubmitButton', function(){ 
    $('#myForm').submit(); 
    return false; 
}); 

我想你也并不需要补充一点:

$(document).on('click', '#myFormSubmitButton', function(){ 
    $('#myForm').submit(); 
    return false; 
}); 

validate方法将表单时submited被自动调用。

+0

我编辑了我的帖子。提交按钮不是提交按钮。这是一个

+0

是的,但如果它是一个按钮元素,并且它在窗体中,那也会触发提交事件。你可以测试。 –

+0

有趣。不知道。但是当Sandeeproops回答说,那么我甚至不需要整个点击式功能。我删除它,现在它工作正常。 – Weblurk

2

你并不需要添加以下代码

$(document).on('click', '#myFormSubmitButton', function(){ 
    $('#myForm').submit(); 
}); 

submitHandler代码会自动处理表单提交。

0

我有同样的问题: 我的目的:验证多种形式与同一类:

我的PHP:

form class="js-validate-itemForm" method="post" action=""> 
... 
form class="js-validate-itemForm" method="post" action=""> 

我的JS:

$('.js-validate-itemForm').each(function() { 
     $(this).validate({ 
      submitHandler: function (form, event) { 
       doActionOnItemform(form, event); 
       return false; 
      } 
     }); 
    });