javascript - 当禁用字段集的子项时确定禁用状态元素

标签 javascript dom

如果输入被禁用是因为它是禁用字段集的子项,IE(甚至 11)似乎没有任何方法可以确定它是否被禁用。有什么方法可以在不搜索树的情况下确定这一点吗?

显然,我可以使用 jQuery 找到最接近的字段集并检查它是否已禁用(如果存在),但这看起来很老套,更不用说可能很昂贵了。我可以查看 currentStyle 以确定它是否变灰 - 但这更加 hacky。我错过了什么吗?

<fieldset disabled>
  <input id="fieldset_child" type="text" value="Inherit Disabled" />
</fieldset>

<script>
  // IE 9-11 returns zero instead of one like Firefox and Chrome do
  console.log(document.querySelectorAll('#fieldset_child:disabled').length);

  // this return false in all browsers 
  console.log(document.getElementById('fieldset_child').disabled);
</script>

示例:http://jsfiddle.net/cmcnulty/ySWH2/

最佳答案

“继承”输入 在 IE 中并没有真正被禁用,它只是看起来被禁用了,您仍然可以输入。在禁用 fieldset 时禁用子输入的真正万无一失的方法是将 disabled 属性应用于各个输入。然后它们将真正被禁用,您将能够通过 document.querySelectorAll

找到它们

关于javascript - 当禁用字段集的子项时确定禁用状态元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21296253/

相关文章:

javascript - 如何从 xml 文件中读取所有带有标签名称及其值的子元素?

javascript - Android 浏览器上的滚动事件未触发。需要解决方法

javascript - React onFocus 和 onFocusCapture 的区别

javascript - 在 Chrome 扩展中输出 Google API 调用

javascript - 如何自动选择html中的某些代码?

javascript - 使用 JS 或 jQuery 从 DOM 中完全删除元素/标签?

javascript - 适用于 Safari 的 AMP 表单验证

javascript - Angularjs 检测新 Dom 上的指令

javascript - 我可以在不使用编辑器的情况下使用 tinyMCE 清理算法吗?

javascript - Angularjs 使用范围缓存已编译的 DOM 元素