Javascript 在禁用字段集的子级时确定禁用状态元素
如果输入被禁用,因为它是禁用字段集的子项,IE(甚至11)似乎没有任何方法确定它被禁用。有没有办法不用搜索树就可以确定 显然,我可以使用jQuery查找最近的字段集,并检查它是否被禁用(如果它存在的话),但这似乎有点骇人听闻,更不用说潜在的昂贵了。我可以查看currentStyle以确定它是否变灰了,但这更令人讨厌。我错过什么了吗Javascript 在禁用字段集的子级时确定禁用状态元素,javascript,dom,Javascript,Dom,如果输入被禁用,因为它是禁用字段集的子项,IE(甚至11)似乎没有任何方法确定它被禁用。有没有办法不用搜索树就可以确定 显然,我可以使用jQuery查找最近的字段集,并检查它是否被禁用(如果它存在的话),但这似乎有点骇人听闻,更不用说潜在的昂贵了。我可以查看currentStyle以确定它是否变灰了,但这更令人讨厌。我错过什么了吗 <fieldset disabled> <input id="fieldset_child" type="text" value="Inheri
<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>
//IE 9-11返回0,而不是像Firefox和Chrome那样返回1
console.log(document.queryselectoral('#fieldset_child:disabled').length);
//在所有浏览器中返回false
console.log(document.getElementById('fieldset_child')。已禁用);
示例:IE中的“继承”
输入并没有真正禁用,它只是显示为禁用,您仍然可以在其中输入。禁用字段集
时禁用子输入的真正简单方法是将disabled
属性应用于单个输入。然后它们将被真正禁用,您将能够通过document.querySelectorAll
找到它们。好的,Internet Explorer公开了一个名为isDisabled()的属性,它是如何跟踪继承其禁用性的内容的。使用它,结合测试节点名以仅检查各种表单元素,您可以以良好的性能确定是否禁用了某些内容。未在IE6-7中测试。这是一个有趣的观察结果,但是,为了表单提交的目的,输入实际上是禁用的-它不是在表单提交中提交的:而且,选择字段不能打开-进一步突出显示它们的“禁用”是有意义的。但由于它们没有“完全”禁用,因此无法通过:disabled
选择器找到它们。对输入本身应用disabled
,使其可查找。正如您当前的HTML示例中所示,您不能改用document.queryselectoral('fieldset[disabled]#fieldset\u child')
选择器吗?