如果输入被禁用,因为它是禁用字段集的子节点,则IE(甚至11)似乎没有任何方法可以确定它已被禁用。有没有办法确定不搜索树?
显然,我可以使用jQuery来查找最接近的字段集,并检查是否存在该字段集是否已禁用,但这看起来很糟糕,更不用说可能很昂贵了。我可以查看currentStyle以确定它是否显示为灰色 - 但这更加黑客。我错过了什么吗?
<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>
答案 0 :(得分:1)
IE中并未真正禁用“继承”input
,只是显示已禁用,您可以仍然输入。禁用fieldset
时禁用子输入的一种真正万无一失的方法是将disabled
属性应用于各个输入。然后他们将被真正禁用,您将能够通过document.querySelectorAll
答案 1 :(得分:1)
好的,事实证明Internet Explorer公开了一个名为isDisabled(http://msdn.microsoft.com/en-us/library/ie/ms533902%28v=vs.85%29.aspx)的属性,它跟踪继承其禁用的内容。使用它,结合测试nodeName以仅检查各种表单元素,您可以确定性能是否被禁用。在IE6-7中未经测试。