如何使用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
:
匹配所有输入、文本区域、选择和按钮元素。
如果你只想要<input>
元素:
$("#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>?的主要内容,如果未能解决你的问题,请参考以下文章