IE не определяет метод изменения jquery для флажка - PullRequest
10 голосов
/ 31 марта 2010

Код ниже работает в 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? или мой код только что выключен?

Ответы [ 5 ]

6 голосов
/ 31 марта 2010

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

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

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

Подробнее здесь: http://norman.walsh.name/2009/03/24/jQueryIE

5 голосов
/ 31 марта 2010

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

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

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

return false; 
});

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

1 голос
/ 06 августа 2010

Вам нужно использовать событие 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
    }
});
1 голос
/ 31 марта 2010

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

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

0 голосов
/ 08 декабря 2011

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

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

вместо события "изменить"

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