2012-08-22 147 views
2

我需要让我的提交按钮只点击一次,以防止双击。只允许点击一次,没有双击

这里有一个方法,有人贴:

$(document).ready(function() { 
     $("#submit").one('click', function (event) 
     { 
     event.preventDefault(); 
     //do something 
     $(this).prop('disabled', true); 
     }); 
    }); 

1)从我的理解,将。一只能触发一次。 如果是这样,我不确定event.preventDefault()和$(this).prop('disabled',true)的需求是什么,因为点击只完成一次。这将是本身的修复。从测试中,我注意到,如果我双击,它只发生一次(尝试没有防止默认和禁用)

2)如果.one没有做我所假设的1),我明白$(这个) .prop('disabled',true);禁用按钮,但不太明白 为什么我们需要event.preventDefault();根据我的理解,这将防止默认操作,在这种情况下是提交。如果这是真的,event.preventDefault();因为我们确实想提交它,但只有一次。

3)本身不会阻止双击。我对此是否正确?所以不需要其他的逻辑,正确?

回答

2

我觉得谁回答,那一定被认为失败考验的解决方案,

event.preventDefault(); - 实施.click的目的是获得实际提交之前处理表单数据。如果你有<input type="submit"它会在执行处理程序之前提交表单,除非它被阻止。如果您使用<button><input type="button"..,则不需要。

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

.one将防止双击。

+0

@ 11684我认为他的问题更多的是为什么我们有这些时使用'.one' .. –

+0

问题,比如说,如果你点击一个按钮,.one将只做一次,我知道了。如果在点击之后,表单被提交并且您在同一页面上,会发生什么情况。这个.one再次按预期工作。不是,就我而言,点击后我会转到另一个页面,但如果您保持在同一页面上而只想提交内容,会发生什么? –

+0

@NatePet提交表单时,页面将刷新..除非你做ajax调用..所以如果表单被提交(这将刷新页面),'.one'将按预期工作。 –

6

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

禁用按钮本身使其在大多数浏览器中显示为灰色,因此只是直接指示该按钮已被点击。提供动作的视觉反馈使其更适用于最终用户。

因此:按钮的点击只能执行一次,因此只能执行一次,但他不希望提交表单。可能在//do something他想打个阿贾克斯电话。