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

Posted

技术标签:

【中文标题】如何使用jQuery禁用表单内的所有<input>?【英文标题】:How to disable all <input > inside a form with jQuery? 【发布时间】:2010-11-27 20:43:18 【问题描述】:
<form id="target">
....
</form>

【问题讨论】:

【参考方案1】:

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

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

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

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

如果你只想要&lt;input&gt; 元素:

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

【讨论】:

从 jQuery 1.6 开始,您应该使用 $("#target :input").prop("disabled", true); 有人应该使用更新的方法编辑答案——这只是目前的糟糕信息。 在 submit() 回调中,使用 $(this),怎么做? @OlivierPons $(this).closest('form').find('input').prop('disabled', true);。不确定您是否可以更好地巩固这一点,我对 jQuery 还是比较陌生。【参考方案2】:

以上示例在技术上不正确。根据最新的 jQuery,使用 prop() 方法应该用于禁用之类的东西。 See their API page.

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

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

如果你只想要元素,使用这个。

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

【参考方案4】:

你可以添加

 <fieldset class="fieldset">

然后你就可以打电话了

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

【讨论】:

【参考方案5】:

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

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

【讨论】:

这会不必要地为表单中的每个元素添加禁用属性。 @OsvaldoMaria 是的,那是因为星形(全部)选择器,您可以将 .custom-class 添加到要禁用的所有输入元素,然后将选择器更改为 $('form 。 custom-class').prop('disabled', true').【参考方案6】:

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

jQuery 1.6+

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

jQuery 1.5 及更低版本

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

【讨论】:

【参考方案7】:

你可以这样做:

//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);

【讨论】:

【参考方案8】:

Gnarf 给出了明确的答案(包括 1.6 版对 jQuery api 的更改)

【讨论】:

他要求“禁用表单内的所有输入”,而不仅仅是“禁用所有输入”。 @Bengala 当然,但你严厉地标记我是第一个指出 API 已更改的人。在我发布此内容时,其他答案均未提及这一点。 我明白,但我认为您应该在相应的学分中包含正确答案,该链接仅显示如何禁用所有输入,我坚持认为,它根本没有回答问题。

以上是关于如何使用jQuery禁用表单内的所有<input>?的主要内容,如果未能解决你的问题,请参考以下文章

禁用 div 内的所有表单元素

如何在 Jquery 中禁用输入(单选)按钮内的类

如何使用 jQuery 禁用 div 或 table 中的所有元素

如何设置表单元素的只读和禁用属性

jQuery,根据name获取多个input表单的值

如何在禁用管道中包含“jquery_ujs”以便能够对表单使用“remote:true”?