我想在提交表单后禁用表单以防止双重提交。非常标准的用例我会想,但我可以发现的所有例子都有缺陷。使用javascript禁用表单以防止双重提交
我能找到的所有东西都是基于禁用提交按钮,但是这并不妨碍表单被重新提交,如果用户在表单上敲入了回车键,这是一种非常常见的方法。
我正在考虑修改现有脚本之一来解决这个问题,但在重新发明轮子之前,有没有人知道脚本已经正确处理了它们能够共享的脚本?我真的很惊讶,那里似乎还没有任何东西。
我想在提交表单后禁用表单以防止双重提交。非常标准的用例我会想,但我可以发现的所有例子都有缺陷。使用javascript禁用表单以防止双重提交
我能找到的所有东西都是基于禁用提交按钮,但是这并不妨碍表单被重新提交,如果用户在表单上敲入了回车键,这是一种非常常见的方法。
我正在考虑修改现有脚本之一来解决这个问题,但在重新发明轮子之前,有没有人知道脚本已经正确处理了它们能够共享的脚本?我真的很惊讶,那里似乎还没有任何东西。
您可以创建布尔变量(或带有布尔成员变量的对象),并且只在变量为false时才提交表单。喜欢的东西:
function init() {
var submit = false;
var f = document.getElementById("FormID");
f.onsubmit = function() {
if(submit) {
return false;
} else {
submit = true;
return true;
}
}
}
当然,你得打个电话init
以下页面加载无论是在哪个味道你选择这样做(window.onload = ...
,window.addEventListener(...)
,window.attachEvent(...)
等)。
我在解决方案时遇到了一些麻烦。从概念上讲它很明显,但是当我实施它时,实际上我似乎可以潜入一个额外的点击,如果我尽可能快地反复按下提交按钮。就好像第二次提交是在第一次有时间将提交设置为true之前启动的。但是,当我坚持提醒时,一切似乎都按我的预期工作。 – 2010-09-01 02:19:00
奇怪的是,双提交脚本完全对输入键。它只使用鼠标点击提交按钮,双柱仍然滑过。 – 2010-09-01 02:54:01
嗯,最后一块信息,这个重复的提交鼠标问题不会发生在最新的Chrome或IE,只有最新的Firefox。也许我已经准备好接受这个作为一个模糊的Firefox错误并将其写下来。 – 2010-09-01 02:57:35
var sent = false;
$('#form').submit(function(e) {
if (!sent) {
sent = true;
// do whatever
}
else e.preventDefault();
});
我已经尝试了很多解决方案,但他们没有为我工作。我用这一个,它是工作真的没事:
jQuery的
<script>
$(document).ready(function(){
$('#buttonSubmit').click(function() {
if ($('#frm-confirm').attr('submitted')){
event.preventDefault();
} else {
$('#frm-confirm').attr('submitted',true);
}
});
});
</script>
HTML/PHP
<form id="frm-confirm" action="" method="post">
<input id="amount" name="amount" value="<?php echo round($_POST['amount'],2); ?>" type="hidden" />
<input id="order_id" name="order_id" value="<?php echo htmlspecialchars($_POST['order_id']);?>" type="hidden" />
<input type="submit" id="buttonSubmit" name="confirm" value="Confirm" />
</form>
是否有可能打表单上的回车键提交表单一旦所有形式元素被禁用?即如果表单没有提交元素,可以通过按回车来提交?我不认为你可以这样做。 – Adam 2010-08-31 20:18:02
@Adam我想我可以禁用所有字段,但到目前为止,我一直只禁用提交。这不是一个错误的想法,我可以走一切禁用的路线。 – 2010-08-31 20:22:09
可能重复的[防止jQuery中的双重提交表单](http://stackoverflow.com/questions/2830542/prevent-double-submission-of-forms-in-jquery) – CmajSmith 2014-11-05 00:43:04