我想根据一些条件禁用 HTML 表单元素的某个部分。这似乎是实现这一目标的最佳方法:
<fieldset disabled>
<input value="one" />
<input value="two" />
</fieldset>
现在,这两个输入已被禁用。但是在IE8上似乎完全出现了问题。这些输入框看起来被禁用了,但我仍然可以在其中输入内容。
演示(不像 JsFiddle 在 IE8 上真正起作用)
是否有跨浏览器的解决方案来解决这个问题,而不需要向每个表单元素添加 disabled (这将使我的脚本更加复杂)。我可能可以使用 jQuery 选择 <fieldset>
,然后通过所有表单元素进行循环并禁用它们 - 但实际上我正在使用 Knockout 绑定来设置 disabled
属性,因此没有地方添加这样的代码。我的最后一招是使用自定义 Knockout 绑定来禁用所有子级,但是这太烦人了。
fieldset
并不是borked
,只是支持不完全。fieldset
是HTML5的一个补充,而IE8仅支持极少量的HTML5表单元素。请参见http://html5test.com results for IE8。fieldset
在IE8中只有部分支持。正如结果所示,element attributes
不被支持。因此,您可能需要想出一种替代方案。正如建议的那样,覆盖层可能是其中之一。虽然可能会有一个polyfill可以在IE8中使用fieldset
,但我不能百分之百确定。 - Nopedisabled 属性
应该在IE8中得到支持。当在运行HTML5测试的IE8上转到http://html5test.com/时也会显示相同的结果。确实很奇怪。 - Nope