我需要点击一次提交按钮,以防止双击。
以下是某人发布的一种方法:
$(document).ready(function () {
$("#submit").one('click', function (event)
{
event.preventDefault();
//do something
$(this).prop('disabled', true);
});
});
1)根据我的理解,.one只会触发ONCE。 如果是这样,我不确定event.preventDefault()和$(this).prop('disabled',true)需要什么,因为点击只进行一次。这本身就是解决方法。从测试开始,我注意到如果我双击,它只发生一次(尝试没有防止默认和禁用)
2)如果.one没有做我在1)上所假设的,我理解$(this).prop('disabled',true)的部分;禁用按钮但不太明白 为什么我们需要event.preventDefault();根据我的理解,它将阻止默认操作,在这种情况下是提交。如果这是真的,event.preventDefault();因为我们确实想提交它,但只提交一次。
3).one本身不会阻止双击。我对此是否正确?所以不需要其余的逻辑,CORRECT?
答案 0 :(得分:6)
在我看来,他想阻止完成提交按钮的默认操作,即将表单发布到服务器。
禁用按钮本身使其在大多数浏览器中看起来都是灰色的,因此它只是直接指示按钮已被点击。提供动作的视觉反馈使其对最终用户更有用。
所以:点击按钮只能执行一次,因此只能执行,但他不希望提交表单。可能在//do something
他想要进行ajax调用。
答案 1 :(得分:2)
我认为无论谁回答,都必须考虑防故障解决方案,
event.preventDefault();
- 实现.click
的目的是在实际提交表单数据之前对其进行处理。如果你有<input type="submit"
在执行处理程序之前提交表单,除非它被阻止。
e.preventDefault()
或<button>
,则不需要 <input type="button"..
。
$(this).prop('disabled', true);
- 防止键盘空间等同于按钮点击。
.one
会阻止双击。