【发布时间】:2013-03-09 22:02:51
【问题描述】:
我一直在努力寻找防止重复提交表单的“正确”方法。 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: 为什么这个点击处理程序会停止提交表单?
搜索更多我找到了这个解决方案(来自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 可以,但我不喜欢它,感觉必须有更简单的方法。
【问题讨论】:
标签: javascript jquery forms