1

我有一个旧页面,它使用大量原始 javascript(没有隐藏浏览器差异的 JS 库)。它动态地创建一个这样的复选框:

function createCheckbox(checkboxName, isChecked, onClickHandler)
{
    var checkboxId = checkboxName + 'ChkBx';
    var chkbx;

    if(Ext.isIE)
    {
        // Following code does not work in IE10 when NOT using compatibility view
        // Throws JS error.  Worked in IE9.
        //if (isChecked)
        //{
        //    chkbx = document.createElement('<input id="' + checkboxId + '" type="checkbox" name="' + checkboxName + '" value="true" checked="checked" className="checkbox" />');
        //}
        //else
        //{
        //    chkbx = document.createElement('<input id="' + checkboxId + '" type="checkbox" name="' + checkboxName + '" value="true" className="checkbox" />');
        //}

        // Following code does not work in IE10 when using compatibility view
        // isChecked == true does not product checked checkbox
        chkbx = document.createElement('input');
        chkbx.id = checkboxId;
        chkbx.name = checkboxName;
        chkbx.value = 'true';
        chkbx.type = 'checkbox';
        chkbx.checked = isChecked;
        chkbx.className = 'checkbox';
    }
    else 
    { ... }

    return chkbx;    
}

我知道在 IE10 中, createElement() 不再接受复杂的字符串参数。这就是为什么我更改了上面的代码。我不明白为什么,它不尊重我将选中的属性设置为 true?应该如何指示复选框应该被选中?

4

1 回答 1

2

添加

chkbx.defaultChecked = isChecked;

问题解决了。

在使用兼容性视图时,IE10 可能会退回到 IE7 的处事方式。(取决于您的设置)

来源:复选框不会在 IE7 中使用 Javascript 进行检查,但没有错误

使用 IE 10.0.9200.16519 测试

于 2013-04-22T20:16:24.063 回答