2010-09-10 142 views
2

关于提交按钮我想禁用按钮,所以用户不会单击多次。 IM使用jquery为,但其没有工作,我的代码是禁用按钮提交点击jquery

setTimeout($('#btn').attr("disabled", true), 1); 
return true; 

按钮得到禁止,但我的控制器不调用。我究竟做错了什么?

+0

为什么使用'setTimeout'? – jAndy 2010-09-10 07:50:49

回答

7
setTimeout(function() { 
    $('#btn').attr('disabled', 'disabled'); 
}, 1); 
+0

我的控制器代码没有调用。就像它禁用按钮时,请求被停止了吗? – 2010-09-10 08:03:47

+0

我发现在click事件中禁用按钮会阻止在某些版本的IE中提交表单。我已经发布了一个解决方案http://stackoverflow.com/questions/2294041/disable-the-button-after-clicking-the-button-once/4218820#4218820 – 2010-11-18 19:43:20

-1

试试这个:

setTimeout($('#btn').attr('disabled', 'disabled'), 1); 
return true; 
+0

您正在将jQuery对象传递给'setTimeout',IMO,它不是可调用的,也不是'eval'的字符串:) – 2010-09-10 07:52:34

6

我看不出有任何理由使用超时,我只是去与

$('#btn').attr('disabled', 'disabled'); 
return true; 

或者更准确地说,

$('#btn').click(function (e) { 
    $(this).attr('disabled', 'disabled'); 
}); 

是你所需要的。

,可能有点邪恶和深奥:P

return !!$('#btn').attr('disabled', 'disabled'); 

而且,只是为了好玩。不要在你的代码中做! :)

编辑:用最新版本的jQuery,你可以把它

$('#btn').attr('disabled', true); 
1
setTimeout($('#btn').attr('disabled', 'disabled),1); 
$("#btn").removeAttr('disabled', disabled')