2010-09-10 214 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')