在IE7中禁用复选框

时间:2011-08-31 20:01:32

标签: javascript internet-explorer

我在表单中有两个复选框,如果选中第一个复选框,则应启用第二个复选框,如果未选中第一个复选框,则应禁用第二个复选框。我快速完成了这个功能:

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中运行?

2 个答案:

答案 0 :(得分:1)

disabled是一个布尔属性。使用falsetrue代替false"disabled"。它应该工作。

HTML标记中的整个disabled="disabled"内容是因为 XHTML 验证程序,而不是因为该值允许为“禁用”字符串。实际上,如果您将此模式应用于HTML5 required属性,即使您说required="false",也会获得必填字段。在HTML5标记中执行此操作的方法是在required时指定true,而在false时根本不指定。{/ p>

答案 1 :(得分:1)

当您操作DOM时,disabled属性应设置为truefalse,而不是字符串。如果将'disabled'替换为true会怎样?

您也可以将逻辑简化为

recEl.disabled = !sendEl.checked;

这是JavaScript中非常基本的东西;甚至IE也不应该有问题。