我在表单中有两个复选框,如果选中第一个复选框,则应启用第二个复选框,如果未选中第一个复选框,则应禁用第二个复选框。我快速完成了这个功能:
function toggleElement(sender, receiver)
{
var sendEl = document.getElementById(sender);
var recEl = document.getElementById(receiver);
if (sendEl.checked)
recEl.disabled = false;
else
recEl.disabled = 'disabled';
}
这在FF和IE 8/9中工作正常但在IE7中没有做任何事情,我添加了以下内容以查看发生了什么:
alert(receiver);
alert(recEl);
alert(recEl.disabled);
在有效的浏览器(FF,IE8 +)中,如果没有,则提醒'name','[object]'和'true'如果禁用'false'。在IE7中,警报被触发,但是说'name','[object]'和'true',即使复选框永远不会被禁用(它不会变灰,我可以继续点击它)
为什么它不能在IE7中运行?
答案 0 :(得分:1)
disabled
是一个布尔属性。使用false
和true
代替false
和"disabled"
。它应该工作。
HTML标记中的整个disabled="disabled"
内容是因为 XHTML 验证程序,而不是因为该值允许为“禁用”字符串。实际上,如果您将此模式应用于HTML5 required
属性,即使您说required="false"
,也会获得必填字段。在HTML5标记中执行此操作的方法是在required
时指定true
,而在false
时根本不指定。{/ p>
答案 1 :(得分:1)
当您操作DOM时,disabled
属性应设置为true
或false
,而不是字符串。如果将'disabled'
替换为true
会怎样?
您也可以将逻辑简化为
recEl.disabled = !sendEl.checked;
这是JavaScript中非常基本的东西;甚至IE也不应该有问题。