onchange / onclick во флажке не работает в IE

У меня есть следующий код, который работает отлично в 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, и это все еще не будет работать.

10
задан Jonik 21 May 2012 в 08:18
поделиться

3 ответа

Вы уверены, что 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.

1
ответ дан 3 December 2019 в 18:31
поделиться

мой код 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, и я действительно не могу понять почему.

0
ответ дан 3 December 2019 в 18:31
поделиться

Internet Explorer запускает событие onchange только тогда, когда флажок теряет фокус (onblur). также см. здесь:
http://krijnhoetmer.nl/stuff/javascript/checkbox-onchange/
и здесь:
http://bytes.com/topic/javascript/answers/92116-onchange- флажок

16
ответ дан 3 December 2019 в 18:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: