IE не обнаруживает метод изменения jquery для флажка

Код ниже работает в FF, Safari, Chrome. Но IE дает мне проблемы.

Если флажок установлен, я не могу заставить IE его обнаружить.

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

   if($('#'+$(this).attr("id")).is(':checked'))
   { 
       var value = "1"; 
   }
   else
   { 
       var value = "0"; 
   } 
   alert(value);

   return false;
});

Просто, я не получаю всплывающее окно с предупреждением, как и ожидалось.
Я даже пробовал это так:

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

   if( $('#'+$(this).attr("id")'+:checked').attr('checked',false))
   { 
       var value = "1"; 
   } 
   else
   { 
       var value = "0"; 
   } 
   alert(value);

   return false;
});

Здесь простой ввод флажка: <input class="prod" type="checkbox" name="checkbox_ID" id="checkbox_ID" value="1"/>

Кто-нибудь знает, нужен ли IE другой метод jquery? или мой код просто выключен?

Ответ 1

Как отмечено sblom с IE7 и ниже, вам нужен элемент для размытия для этого действия для запуска, более поздние версии IE и других браузеров не нуждаются в элементе, чтобы явно потерять фокус, просто изменение должно запустить это событие (как показано на рисунке в моем примере ниже).

Я считаю, что ваша проблема может заключаться в том, что вы пытаетесь получить доступ к переменной "value", когда она выходит за рамки.

$("#checkbox_ID").change(function(){
var value;
if($(this).is(':checked'))
{ 
    value = "1"; 
}
else
{ 
    value = "0"; 
} 
alert(value);

return false; 
});

Вот рабочий предварительный просмотр, обратите внимание, что, поскольку вы возвращаете false в конце функции, он сбрасывает флажок до своего предыдущего значения, поскольку вы отменили эффект нажатия.

Ответ 2

Это, вероятно, будет работать, если вы щелкнете в другом месте после того, как вы установите флажок. IE такой странный.

Можете попробовать что-то вроде:

$(function () {
  if ($.browser.msie) {
    $('input:checkbox').click(function () {
      this.blur();
      this.focus();
});

Дополнительная информация здесь: http://norman.walsh.name/2009/03/24/jQueryIE

Ответ 3

Событие изменения запускается только тогда, когда значение изменяется после того, как управление теряет фокус. Для флажка лучше подключиться к событию click.

Вот документация о том, когда происходит событие onchange: текст ссылки

Ответ 4

Вам нужно использовать событие propertychange вместо события change. Имейте в виду, что событие propertychange будет срабатывать не по проверке/снятию флажка. Чтобы компенсировать это, вы должны проверить window.event.propertyName (только для IE):

$(':checkbox').bind($.browser.msie ? 'propertychange': 'change', function(e) {
    if (e.type == "change" || (e.type == "propertychange" && window.event.propertyName == "checked")) {
        // your code here
    }
});

Ответ 5

попробуйте использовать

jQuery('#checkbox').click(handleFunc);

вместо события "change"