为什么我的表单提交两次?

时间:2012-02-16 15:08:58

标签: php jquery forms jquery-forms-plugin double-submit-problem

出于某种原因,我的表单只需按一下按钮即可提交两次。这是我第一次使用jquery Form插件,我想jquery提交一次,表单也“自然”提交。我已经看到,补救措施是将“return false”附加到表单的onSubmit事件处理程序。我以为我在做那件事,但显然它不起作用。

有人可以帮忙吗?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>User form entry </title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="jquery.validate.js"></script>
<script src="jquery.passwordStrength.js"></script>
<script src="jquery.form.js"></script>
<script>

$(document).ready(function() {
    $('#signupForm').ajaxForm(function() { 
         var queryString = $('#signupForm').formSerialize(); 
         $.post('process.php', queryString);
    });
});
</script>
</head>
<body>
   <form id="signupForm" action="process.php" onsubmit="return false" method="post">
   <fieldset class="password">
          ... form goes here
   <button type="submit" name="formSubmit" value="submit">Click to submit</button>
   </form>

<div id="results"></div>

</body>
</html>

我尝试在表单元素中添加onsubmit =“return false”,但之后我根本没有提交。我也尝试过添加“return false”。到jQuery,但后来我还有两次提交。我错过了什么?这似乎是根据jQuery Form Plugin网站的标准方法..我的表单有何不同?

(顺便说一下,只是为了清楚..我不是在谈论通过反复按下按钮提交多个连续表格的问题。我的问题是“一个提交按钮推送=两个提交”。)

4 个答案:

答案 0 :(得分:20)

$('#signupForm').ajaxForm(function() { 
            var queryString = $('#signupForm').formSerialize(); 
            $.post('process.php', queryString);

});

这是提交两次.... ajaxForm方法一次,然后是post()第二次

ajaxForm方法为您处理表单sumbission ...您不需要添加post()方法... ajaxForm内部的函数是回调函数,在成功时执行...

$('#signupForm').ajaxForm(function() { 
       alert("Thank you for your comment!"); 
});

此代码会在成功发布后显示警告...此处的简单示例 - &gt; http://jquery.malsup.com/form/

您还应该从表单中删除onsubmit属性...

更新

如果你想显示结果......就这样做:

$(document).ready(function() { 
    $('#signupForm').ajaxForm({ target: '#results' }); 
    // this will output the responseText from the submitted form to the target DOM element
});

答案 1 :(得分:0)

避免使用

<button type="submit" name="formSubmit" value="submit">

所以你的提交按钮会自动提交一个,你的jquery会做另一个提交

使用此

<input type="button" name="formSubmit" value="submit">

答案 2 :(得分:0)

尝试使用:

onsubmit="void(0);"

答案 3 :(得分:-1)

请勿使用submit按钮。使用常规按钮。

相关问题