【问题标题】:How to enable all disabled form select options without jQuery?如何在没有 jQuery 的情况下启用所有禁用的表单选择选项?
【发布时间】:2014-05-18 11:12:43
【问题描述】:

我有一个带有几个选择元素的 HTML 表单。每个元素中的一个选项最初已被禁用。示例:

<label>Amount: <select name="amount">
    <option selected value='0'>Any</option>
    <option value="1">100+</option>
    <option value="2">200+</option>
    <option value="3">500+</option>
    <option disabled value="4">Specify</option>
</select></label>

我需要使用 javascript 启用它们。有没有不使用 jQuery 来定位这些元素的好方法?

【问题讨论】:

  • document.querySelectorAll 非常适合现代浏览器(只需检查 disabled 属性)。针对老年人?
  • 是的,我注意到它只适用于现代浏览器。
  • k.然后我会在现代浏览器中检测和使用 Amit 的功能,并在旧版浏览器中使用 Rob 的后备功能。
  • 看,IE8也支持querySelectorAll。

标签: javascript html forms select options


【解决方案1】:

这将处理所有禁用的元素并且很简单。

你可以这样做:

var elems = document.querySelectorAll('[disabled]'); // target all disabled elemnts
for (var i = 0; i < elems.length; i++) {
    elems[i].removeAttribute('disabled'); // enable them.
}

Live Demo

【讨论】:

  • 此功能得到 92% 的支持。我想我会选择你的效率。谢谢。
  • 很高兴能帮上忙。 ;)
  • “92% 支持”是什么意思? :P
【解决方案2】:

JS:

var ddl = document.getElementsByTagName("select");
for (var m = 0; m < ddl.length; m++) {
   for (var i = 0; i < ddl[m].length; i++) {
      ddl[m].options[i].disabled = false;
   }
}

Working fiddle.

【讨论】:

  • 我有几个选择元素,不只是这个。
  • RobG 的解决方案会更好,因为两者都在循环所有选项。为努力+1。
【解决方案3】:

如果你想启用文档中的每个选项元素,你可以这样做:

var options = document.getElementsByTagName('option');
for (var i=0, iLen=options.length; i<iLen; i++) {
  options[i].disabled = false;
}

如果您只想启用特定选择元素的选项,请先获取对其的引用,然后使用其options 集合:

var options = select.options;
// continue as as above...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    • 2012-09-16
    • 2013-07-04
    • 2015-12-17
    • 2012-08-26
    相关资源
    最近更新 更多