出于某种原因,我的表单只需按一下按钮即可提交两次。这是我第一次使用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网站的标准方法..我的表单有何不同?
(顺便说一下,只是为了清楚..我不是在谈论通过反复按下按钮提交多个连续表格的问题。我的问题是“一个提交按钮推送=两个提交”。)
答案 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
按钮。使用常规按钮。