2011-10-01 41 views
1

我有以下代碼禁用時提交表單的提交按鈕:是否有更簡潔的jQuery語法來禁用表單提交上的提交按鈕?

$('#myform').submit(function(){ 
    $('input[type=submit]', this).attr('disabled', 'disabled'); 
}); 

是否有這樣的更簡潔的語法?

+0

爲什麼你有什麼問題?它足夠簡潔。 – Shef

+0

我希望有一種「disabled()」功能。 – arezzo

+0

不,沒有這樣的函數,而是'$('input [type = submit]',this).prop('disabled',true);'我想清楚了。 :) – Shef

回答

2

jQuery disable plugin

$('input').disable(); //disables 
$('input').enable(); //enables 
$('input').toggleDisabled(); //toggles 
$('input').toggleEnabled(); //toggles 
$('input').toggleDisabled(true); //disables 
$('input').toggleEnabled(true); //enables 

或者,如果你不想要一個插件,您可以使用此:

jQuery.fn.disable = function() { 
    $(this).prop("disabled", true); 
}; 

$('input[type=submit]', this).disable(); 
+1

這個微不足道的任務的插件?共同。 :) – Shef

+0

您應該使用'.prop()'在jQuery> 1.6上設置'disabled'屬性,而不是'.attr()'。 – Shef

+0

您的非插件解決方案非常完美。謝謝。 – arezzo

0

一個清潔的版本可以是這樣:

$(this).find(':submit').attr('disabled', true); 

$(this).find(':submit').prop('disabled', true); 
+0

這將涉及Sizzle,不是一個好主意。 – Shef

1
$('#myform').submit(function(){ 
    $('input[type=submit]', this).prop('disabled', true); 
}); 

它不能得到比這更簡潔。它足夠乾淨。我改變了$.attr()$.prop(),因爲這是你應該用來設置和獲取值,它改變了元素的狀態,但不改變屬性本身。

從文檔:

.prop()方法應被用來設置殘疾人和檢查,而不是.attr()方法。

+0

好的。我剛剛閱讀了您鏈接的文檔。你怎麼知道你是在處理一個屬性還是屬性。文檔中提到的例子都沒有包括「disabled」。你確定它不是'屬性'嗎? – arezzo

+0

@arezzo [是的,他們這樣做](http://api.jquery.com/prop/#prop2)。我從文檔引用你。打CTRL + S很容易找到引用文本的位置。 – Shef

2

嗯,我想給它一個ID,首先,否則你會禁用每個提交按鈕,這可能是也可能不是你想要的。

除此之外,that's about it除非你想使用disable plugin