如何在jQuery中禁用字段集内的所有元素?

And*_*nda 16 jquery fieldset

我的<fieldset>页面上有2 秒,但其中一个应该根据某些用户的选择禁用所有元素.

字段集包含文本输入,选择和链接.有没有办法禁用所有这些而不是逐个禁用它们?

kgi*_*kis 23

那么使用儿童选择器呢?

$("#myfieldeset").children().attr("disabled", "disabled");
Run Code Online (Sandbox Code Playgroud)

您还可以过滤子项选择:

$("#myfieldeset").children("a,input");
Run Code Online (Sandbox Code Playgroud)

  • 从jquery 1.6开始,[建议使用`.prop()`而不是`.attr()`来设置属性的值](http://api.jquery.com/prop/#prop2),这可以如:`.prop("disabled",true)` (7认同)

Zac*_*bey 7

您可以设置disabled属性fieldset.

来自MDN:

如果设置了此布尔属性,则表示作为其后代的表单控件(第一个可选元素的后代除外)将被禁用,即不可编辑.他们不会收到任何浏览事件,例如鼠标点击或与焦点相关的事件.浏览器经常将这些控件显示为灰色.


HTML:<fieldset disabled> ... </fieldset>

JQuery:$('#myfieldset').prop('disabled', true);

JS:document.getElementById('#myFieldset').disabled = true;


重要说明:由于存在一些错误,这在Internet Explorer上无法正常工作,但在其他任何地方(包括Edge)都能正常工作.

IE错误:1,2

tl; dr:文本和文件输入未正确禁用,用户仍可以与它们进行交互

如果这是一个交易破坏者,你需要进入字段集并disabled按照其他答案中的描述加入其后代.


浏览器支持信息:http://caniuse.com/#feat=fieldset-disabled