2011-10-01 62 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