admin管理员组文章数量:1390609
I'd like to disable a form after it is submitted in order to prevent double submissions. Pretty standard use case I would think, but all of the examples I can find out there are flawed.
Everything I can find is based on disabling the submit button, but this doesn't prevent the form from being re-submitted if the user hits the enter key on the form, which is a pretty mon approach.
I'm thinking about modifying one of the existing scripts out there to account for this, but before I reinvent the wheel, does anyone know of a script that already handles this properly that they're able to share? I'm really surprised there doesn't seem to be anything out there yet.
I'd like to disable a form after it is submitted in order to prevent double submissions. Pretty standard use case I would think, but all of the examples I can find out there are flawed.
Everything I can find is based on disabling the submit button, but this doesn't prevent the form from being re-submitted if the user hits the enter key on the form, which is a pretty mon approach.
I'm thinking about modifying one of the existing scripts out there to account for this, but before I reinvent the wheel, does anyone know of a script that already handles this properly that they're able to share? I'm really surprised there doesn't seem to be anything out there yet.
Share Improve this question asked Aug 31, 2010 at 20:07 William JonesWilliam Jones 18.3k18 gold badges66 silver badges100 bronze badges 4- Is it possible to hit the enter key on the form to submit the form once all form elements are disabled? i.e. if a form has no submit elements can it be submitted by pressing enter? I didn't think you could do that. – Adam Commented Aug 31, 2010 at 20:18
- @Adam I suppose I could disable all fields, but so far I have been only disabling the submit. That's not a bad thought, I could just go the route of disabling everything. – William Jones Commented Aug 31, 2010 at 20:22
- possible duplicate of Prevent double submission of forms in jQuery – CmajSmith Commented Nov 5, 2014 at 0:43
- @CmajSmith I would agree with the duplicate except that the other question is specifically for jQuery, whereas this user might want a vanilla solution. – Peter Olson Commented Nov 6, 2014 at 1:56
3 Answers
Reset to default 4You could create a boolean variable (or an object with a boolean member variable) and only submit the form when the variable is false. Something like:
function init() {
var submit = false;
var f = document.getElementById("FormID");
f.onsubmit = function() {
if(submit) {
return false;
} else {
submit = true;
return true;
}
}
}
Of course, you would have to call init
following the page load, in whichever flavor you choose to do that (window.onload = ...
, window.addEventListener(...)
, window.attachEvent(...)
, etc.).
http://jsfiddle/c2N4v/
var sent = false;
$('#form').submit(function(e) {
if (!sent) {
sent = true;
// do whatever
}
else e.preventDefault();
});
i've tried a lot of solutions but none of them worked for me. I used this one and it is working really fine:
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>
本文标签: Disabling forms with javascript on submit to prevent double submitStack Overflow
版权声明:本文标题:Disabling forms with javascript on submit to prevent double submit - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1744707778a2620943.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论