我一直在试图找到防止双重提交表单的“正确”方法。 SO上有很多相关的帖子,但没有一个对我来说很重要。下面有两个问题。最简单的方法来禁用按钮提交表单?
这里是我的形式
<form method="POST">
<input type="text" name="q"/>
<button class="once-only">Send</button>
</form>
这是我第一次禁止双的提交尝试:
$(document).ready(function(){
$(".once-only").click(function(){
this.disabled = true;
return true;
});
});
这是建议的方法在这里:Disable button after post using JS/Jquery。该帖子建议提交元素必须是输入而不是按钮,但测试两者都没有区别。你可以使用这个小提琴自己尝试一下:http://jsfiddle.net/uT3hP/
正如你所看到的,这会禁用按钮,但也会阻止提交表单。在提交元素是按钮和输入元素的情况下。
问题1:为什么这个click处理程序停止提交表单?
搜索周围的一些更多的,我觉得这个解决方案(从Why doesn't my form post when I disable the submit button to prevent double clicking?)
if($.data(this, 'clicked')){
return false;
} else{
$.data(this, 'clicked', true);
return true;
}
你可以利用这个使用这个小提琴演奏:http://jsfiddle.net/uT3hP/1/
这并不工作,但...
问题2:这是我们能做的最好的吗?
我认为这将是一件基本的事情。方法1不起作用,方法2起作用,但我不喜欢它,并且感觉必须有一个更简单的方法。
可能重复(http://stackoverflow.com/questions/5691054/disable-submit-button-on-form-submit) – mcastle 2015-06-26 15:43:23