如何使用JavaScript禁用多个选择标签中的多个选项
How do I disable multiple options in multiple select tags with JavaScript?
我有一个有多个下拉菜单的页面,我想在所有这些下拉菜单中禁用多个选项。
我要禁用的选项共享某些特征,即它们分别被两个类标识。所有列表中的许多选项共享相同的类,我想添加几个按钮来基于这些类启用或禁用选项。
我的问题是,我在这里看到的标准方法是目标选项
- by select element 由数量
- 。
但是我的是动态生成的,我试图禁用的选项并不总是彼此相邻。
下面是其中一个下拉菜单的片段:
<select name="m1">
<option value="Abyss Guard, Cereberus" class="Covert Beast">Abyss Guard, Cereberus</option>
<option value="Abyss Guard, Cereberus+" class="Covert Beast">Abyss Guard, Cereberus+</option>
<option value="Achlis+" class="Covert Beast">Achlis+</option>
<option value="Adept Devil+" class="Impulse Demon">Adept Devil+</option>
<option value="Agares+" class="Covert Demon">Agares+</option>
<option value="Airship of Death+" class="Psycho Creation">Airship of Death+</option>
<option value="Ancient Huge Statue+" class="Psycho Creation">Ancient Huge Statue+</option>
<option value="Anna Thorn Maiden" class="Impulse Demon">Anna Thorn Maiden</option>
<option value="Anna Thorn Maiden+" class="Impulse Demon">Anna Thorn Maiden+</option>
<option value="Anomalocaris+" class="Impulse Beast">Anomalocaris+</option>
<option value="Apopisu of Chaos+" class="Psycho Beast">Apopisu of Chaos+</option>
<option value="Arachno Chi" class="Psycho Crawler">Arachno Chi</option>
<option value="Arachno Chi+" class="Psycho Crawler">Arachno Chi+</option>
<option value="Arbitration Demon+" class="Psycho Demon">Arbitration Demon+</option>
<option value="Armored Black Tiger+" class="Impulse Beast">Armored Black Tiger+</option>
<option value="Armored Bucephalus+" class="Covert Beast">Armored Bucephalus+</option>
</select>
这绝不是一个详尽的列表,每个下拉菜单都有几百个选项,尽管所有下拉菜单都包含相同的列表。如您所见,该列表是按字母顺序排序的,而不是按类排序的。
我希望禁用和启用基于两个类之一的按钮选项,禁用状态应该覆盖启用状态。标准的document.getElementById('m1').options[number].disabled
在这里并没有真正帮助我,因为列表是动态生成的,我不知道特定选项将在哪里结束。
该网站的部分目标是尽量减少重新加载所需的数量,同时尽量减少正在执行的javascript数量,以加快响应速度。是否有一种方法,我可以选择所有的选项在所有的下拉列表中,是任何特定的类?
这里有一种方法。如果您有那么多选项,而且它们不会改变,请考虑缓存文档的结果。querySelectorAll,这样您就不必在每次要禁用/启用它们时再次找到所有选项。
http://jsfiddle.net/uj86d/HTML<select>
<option value="test1" class="red">Test 1</option>
<option value="test2">Test 2</option>
<option value="test3" class="red">Test 3</option>
<option value="test4">Test 4</option>
</select>
<select>
<option value="test1">Test 1</option>
<option value="test2" class="red">Test 2</option>
<option value="test3">Test 3</option>
<option value="test4" class="red">Test 4</option>
</select>
<button>Disable reds!</button>
JS
//disable all options with a red class
document.querySelector('button').addEventListener('click', function () {
var redOptions = document.querySelectorAll('option.red'),
i = 0,
len = redOptions.length;
for (; i < len; i++) {
redOptions[i].disabled = true;
}
});
相关文章:
- 当使用select作为标签时,如何使用ng选项禁用angularjs中的选项
- Ionic V1.3-标签-带条件的徽章样式<离子选项卡>
- 调用函数单击选择标签中的选项
- 如何使用 JavaScriptJQuery 将隐藏输入标签的值与选择标签的选定选项的值进行设置
- 单击“选择标签”中的“选项”时创建,然后选中“值”创建输入
- 在<选项>标签之间切换时保存输入文本
- 取决于更改标签的下拉选项
- 如何在“选项”标签上获取“名称”属性
- 如何使用 queryselectorAll() 选择
- 将文件转换为数组并使用数据列表和选项标签为自动完成文本框添加数组元素
- 谷歌地图没有在标签2中和标签3中正确加载.如何创建刷新选项卡
- 如何使用 html 选项标签并检查选择了哪个选项
- 如何通过 innerHTML 设置选择标签选项
- 使用Highcharts中的“步骤”标签选项,从轴的末尾开始
- Riotjs的嵌套标签选项是未定义的
- 我怎样才能得到select>标签选项,由用户使用Flask选择
- 在Node.js/Express中获取选择标签选项索引
- 将选择标签选项的json数据存储在变量中
- 隐藏谷歌地图地形和标签选项
- 事件点击标签<选项>