只允许点击一次,不要双击

时间:2012-08-22 14:56:11

标签: jquery

我需要点击一次提交按钮,以防止双击。

以下是某人发布的一种方法:

    $(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?

2 个答案:

答案 0 :(得分:6)

在我看来,他想阻止完成提交按钮的默认操作,即将表单发布到服务器。

禁用按钮本身使其在大多数浏览器中看起来都是灰色的,因此它只是直接指示按钮已被点击。提供动作的视觉反馈使其对最终用户更有用。

所以:点击按钮只能执行一次,因此只能执行,但他不希望提交表单。可能在//do something他想要进行ajax调用。

答案 1 :(得分:2)

我认为无论谁回答,都必须考虑防故障解决方案,

event.preventDefault(); - 实现.click的目的是在实际提交表单数据之前对其进行处理。如果你有<input type="submit"在执行处理程序之前提交表单,除非它被阻止。

如果您使用e.preventDefault()<button>,则不需要

<input type="button"..

$(this).prop('disabled', true); - 防止键盘空间等同于按钮点击。

.one会阻止双击。