如何使用jQuery禁用表单中的所有<input>元素?

165
<form id="target">
....
</form>
8个回答

325

在旧版本中,您可以使用attr。从jQuery 1.6开始,您应该改用prop

$("#target :input").prop("disabled", true);

禁用'target'内的所有表单元素。请参阅:input

匹配所有


24
从 jQuery 1.6 开始,您应该使用 $("#target :input").prop("disabled", true); - danijel
5
现在应该有人编辑这个答案,更新其中的方法——目前来看这是错误的信息。 - Ben Claar
在submit()回调函数中,如何使用$(this)? - Olivier Pons
2
@OlivierPons $(this).closest('form').find('input').prop('disabled', true);。不确定是否可以更好地整合,我在jQuery方面还是新手。 - wjervis

44
上面的例子在技术上是不正确的。根据最新的jQuery,应该使用prop()方法来禁用类似于disabled的东西。请参阅他们的API页面。 要禁用'target'内部的所有表单元素,请使用:input选择器,它匹配所有输入、文本区域、选择和按钮元素。
$("#target :input").prop("disabled", true);

如果您只想要{{p}}元素,请使用此方法。

$("#target input").prop("disabled", true);

18

更简洁的方法是使用它们的选择器引擎。 因此,要禁用 div 或表单父级中的所有表单元素。

$myForm.find(':input:not(:disabled)').prop('disabled',true)

16

你可以添加

 <fieldset class="fieldset">

然后你可以调用

 $('.fieldset').prop('disabled', true);

12

通过这一行代码,您可以禁用表单中的任何输入字段。

$('form *').prop('disabled', true);

这会不必要地向表单中的每个元素添加一个禁用属性。 - Osvaldo Maria
@OsvaldoMaria 是的,那是因为星号(全部)选择器,你可以给想要禁用的所有输入元素添加一个.custom-class,然后将选择器更改为$('form .custom-class').prop('disabled', true')。 - Samir Rahimy

11

禁用所有表单,只需简单的编写:

jQuery 1.6+

$("#form :input").prop("disabled", true);

jQuery 1.5及以下版本

$("#form :input").attr('disabled','disabled');

3

你可以像这样做:

//HTML BUTTON
<button type="button" onclick="disableAll()">Disable</button>

//Jquery function
function disableAll() {
    //DISABLE ALL FIELDS THAT ARE NOT DISABLED
    $('form').find(':input:not(:disabled)').prop('disabled', true);

    //ENABLE ALL FIELDS THAT DISABLED
    //$('form').find(':input(:disabled)').prop('disabled', false);
}

0

关于 jQuery API 在 1.6 版本中的更改,Gnarf 给出了权威答案。


他要求“禁用表单中的所有输入”,而不仅仅是“禁用所有输入”。 - Miguel Peniche
@Bengala 当然可以,但是你对我指出API已更改的事情评价过于苛刻了。在我发帖时,其他答案都没有提到这一点。 - ErichBSchulz
我理解,但我认为您应该包括一个正确的答案和相应的证书,链接只是展示如何禁用所有输入,这并没有回答问题。 - Miguel Peniche

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接