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


Answers:


283

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

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

禁用“目标”内的所有表单元素。见:input

匹配所有输入,文本区域,选择和按钮元素。

如果只需要<input>元素:

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

21
从jQuery 1.6开始,您应该使用$("#target :input").prop("disabled", true);
danijel 2013年

4
有人应该使用更新的方法来编辑答案-这只是目前的错误信息。
Ben Claar 2013年

并在使用$(this)的Submit()回调中,该怎么做?
奥利维尔·庞斯

2
@OlivierPons $(this).closest('form').find('input').prop('disabled', true);。不知道您是否可以更好地整合它,我仍然对jQuery不太满意。
wjervis

39

以上示例在技术上是不正确的。对于最新的jQuery,use prop()方法应用于禁用之类的事情。参见他们的API页面。

要禁用“目标”内的所有表单元素,请使用:input选择器,该选择器匹配所有输入,文本区域,选择和按钮元素。

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

如果只需要元素,请使用此元素。

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

15

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

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


8

要禁用所有表单,就像编写一样简单:

jQuery 1.6以上

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

jQuery 1.5及以下

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

8

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

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

这不必要地向表单中的每个元素添加了禁用的属性。
Osvaldo Maria

@OsvaldoMaria是的,这是因为使用了星标(全部)选择器,您可以将.custom-class添加到要禁用的所有输入元素,然后将选择器更改为$('form .custom-class')。prop( 'disabled',true')。
萨米尔·拉希米

-1

明确的答案(在版本1.6中包含对jQuery API的更改)已由Gnarf给出


他要求“禁用表单内的所有输入”,而不仅仅是“禁用所有输入”。
孟加拉国

@Bengala当然可以,但是您要苛刻我,因为它是第一个指出API发生了变化的人。在我发布此信息时,没有其他答案提到这一点。
ErichBSchulz

我理解,但是我认为您应该在相应的学分中包括正确的答案,该链接仅显示了如何禁用所有输入,我坚持认为,它根本无法回答所有问题。
孟加拉邦
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.