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? или мой код рядом с?

10
задан rahul 31 March 2010 в 04:06
поделиться

4 ответа

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

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

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

return false; 
});

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

5
ответ дан 3 December 2019 в 23:49
поделиться

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

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

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

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

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

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

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

6
ответ дан 3 December 2019 в 23:49
поделиться

Вам нужно использовать событие 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
ответ дан 3 December 2019 в 23:49
поделиться
Другие вопросы по тегам:

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