复选框中的onchange / onclick在IE中不起作用

时间:2010-06-25 11:51:33

标签: javascript html internet-explorer

我有以下代码,在Chrome / FF中完美运行:

chkbx_send_demo.onchange = function(){
    if(sel_template.selectedIndex <= 0 && chkbx_send_demo.checked == true){
        alert("Choose a Template");
        sel_template.selectedIndex = 1;
    }
    if(chkbx_send_demo.checked == false){
        sel_template.selectedIndex = 0;
     }
}

但它只是在IE中不起作用。我试图将事件更改为chkbx_send_demo.onclick,它仍然无效。

4 个答案:

答案 0 :(得分:16)

当复选框失去焦点(onblur)时,Internet Explorer仅触发onchange事件。 也见这里:
http://krijnhoetmer.nl/stuff/javascript/checkbox-onchange/
在这里:
http://bytes.com/topic/javascript/answers/92116-onchange-checkbox

答案 1 :(得分:4)

我在ie8上面临同样的问题,我用下面的技巧来修复它。 http://sleeplesscoding.blogspot.com/2010/01/fixing-ie-onchange-event-for-checkboxes.html

答案 2 :(得分:1)

您确定onclick 不起作用吗?你检查了javascript错误吗?

以下适用于IE7(没有IE6进行测试)

<html>
    <head>
       <script>
            function text()
            {
                alert(document.getElementById("cbxTest").checked);
            }
       </script>
    </head>
    <body>
        <input type="checkbox" name="cbxTest" id="cbxTest" onclick="text()"/>
        <label for="cbxTest"> Test </label>
    </body>
</html>

注意:这仅适用于onclick。 OnChange在IE中的工作方式不同,请参阅GOsha的回答。

答案 3 :(得分:0)

我的JS代码现在是这样的:

if(navigator.appName == "Microsoft Internet Explorer"){
            alert("IE");
            chkbx_send_demo.onclick = function(){
                alert("HI");
                if(sel_template.selectedIndex <= 0 && chkbx_send_demo.checked == true){
                    alert("Choose a Template");
                    sel_template.selectedIndex = 1;
                }
                if(chkbx_send_demo.checked == false){
                    alert("HI");
                    sel_template.selectedIndex = 0;
                }
                alert("HI");
            }
        }
        else
        {
            chkbx_send_demo.onchange = function(){
                if(sel_template.selectedIndex <= 0 && chkbx_send_demo.checked == true){
                    alert("Choose a Template");
                    sel_template.selectedIndex = 1;
                }
                if(chkbx_send_demo.checked == false){
                    sel_template.selectedIndex = 0;
                }
            }
        }

没有javascript错误,但代码只是没有在IE上执行,我真的不明白为什么。