значение флажка изменяется только при двойном нажатии в IE7 - PullRequest
1 голос
/ 26 апреля 2011

У меня есть флажок, который должен отображать лайтбокс при значении true. Если я снова установлю флажок, когда значение будет установлено в true, оно должно изменить значение на false и отобразить окно предупреждения. Это отлично работает в Firefox.

Но в IE7, когда я устанавливаю флажок, когда его значение установлено в true, значение не меняется на false. Таким образом, лайтбокс отображается снова. Только когда я снова установлю флажок, значение изменится на false и отобразится окно с предупреждением.

 <input class="checkbox" type="checkbox" id="chkbox"/>
 <a href="lightbox.html?KeepThis=true&TB_iframe=true&modal=true" class="thickbox" id="lightbox_link"></a>

Я использовал функцию изменения для изменения значения флажка и отображения соответственно.

 $("#chkbox").change(function(){

     alert(this.checked); //returns true in IE when clicked for the second time
     if(this.checked)
            {
               $("a#lightbox_link").trigger("click"); //displays the lightbox

            }
            else
            {
                $( "#dialog-confirm" ).dialog({
                        resizable: false,   
                        modal: true,
                        buttons: {  
                                   "OK": function() {
                                         $( this ).dialog( "close" );   
                                    },          
                                    Cancel: function() {
                                         $( this ).dialog( "close" );   
                                         $("#chkbox").attr("checked", true);    
                                    }                   
                                }
               })
            }

});

Ответы [ 2 ]

1 голос
/ 26 апреля 2011

Лучше обрабатывать событие click на флажке. Затем внутри функции вы можете проверить $( this ).attr( 'checked' ) и затем обработать этот щелчок, показывая лайтбокс или скрывая его.

EDITED

также используйте $( this ).attr( 'checked' ) вместо this.checked.

0 голосов
/ 07 марта 2012

Это проблема с событием change в IE, версии 5.5, 6.0, 7.0 и 8.0 не будут работать должным образом при использовании события change.

В соответствии с режимом Quirks ,

IE 5-8 запускает событие, когда флажок или радио размыты, а не когда он активирован.Это серьезная ошибка, которая требует, чтобы пользователь предпринял другое действие, и препятствует согласованному кросс-браузерному интерфейсу, основанному на событии изменения на флажках и радио.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...