IE8 и IE7 onchange событие запускается только после повторного выбора

У меня есть группа радио с обработчиком onchange:

<input type="radio" name="Q12" value="radio" id="Q12_0"  onchange="nextPnl('Q12');">
<br/>
<input type="radio" name="Q12" value="radio" id="Q12_1"  onchange="nextPnl('Q12');">
         ​

function nextPnl(did)
{
document.write(did);

}​

Проблема в том, что в IE8 & amp; IE7, событие onchange запускается только после повторного выбора.

Пожалуйста, просмотрите эту демонстрацию в инструментах разработчика IE [режим браузера] IE8: http://jsfiddle.net/3zwur/2/

 Marius Stănescu31 окт. 2012 г., 11:00
Вы можете найти общее решение для IE7 / IE8onchange ошибка в событииthis article.

Ответы на вопрос(3)

Решение Вопроса

Это связано с ошибкой в событиях изменения IE7 и IE8. Вы должны вместо этого слушатьclick событие.

Как показано в этомстол в режиме причудСобытие изменения на переключателях и флажках довольно глючное в IE7 и IE8.

Вы можете прослушать событие click так:

<input type="radio" name="Q12" value="radio" id="Q12_0"  onclick="nextPnl('Q12');">
<br>
<input type="radio" name="Q12" value="radio" id="Q12_1"   onclick="nextPnl('Q12');">

И вилка твоей скрипкиhttp://jsfiddle.net/T7VYL/

Обычно, используя библиотеку JavaScript, такую какJQuery а такжеYUI сделать вашу жизнь проще, хотя из моего тестирования они не исправляют эту ошибку в старых версиях IE.

Если вы все еще хотите прослушать событие изменения, вы можете развернуть это исправление:http://www.ridgesolutions.ie/index.php/2011/03/02/ie8-chage-jquery-event-not-firing/, В основном он прослушивает событие click, а затем заставляет элемент инициировать событие change.

Как продемонстрировано скриптом аскера:http://jsfiddle.net/3zwur/3

 17 июн. 2012 г., 03:32
Я только что протестировал JQuery и YUI3, и, к сожалению, они не исправляют эту ошибку в старых версиях IE. Ваше решение состоит в том, чтобы прослушать событие click или вызвать событие change так:ridgesolutions.ie/index.php/2011/03/02/…
 11 дек. 2015 г., 23:23
& Quot; Изменить & Quot; является предпочтительным событием для флажков, и я просто потратил, вероятно, два разочаровывающих часа, пытаясь заставить его работать в современных браузерах и IE8, но не заставляя его работать в IE8, но когда я прочитал это и изменил событие на «onclick» IE8 работал.
 Registered User17 июн. 2012 г., 03:33
 14 мар. 2013 г., 17:45
Это произошло преждевременно для меня & # x2014; щелчок регистрируется до появления диалогового окна ввода файла. Мое решение состояло в том, чтобы выполнить функцию изменения наsetTimeout 0 миллисекунд после щелчка, злоупотребляя асинхронностью, чтобы разрешить очистку стека (и разрешить действие ввода файла), прежде чем это произойдет:onchange="setTimeout(function deferNextPnl(){nextPnl('Q12')},0)".

Другое решение состоит в том, чтобы поставитьonchange событие на вложенной форме через jQuery.

$('#form').on('change', function() {
    $(this).submit();
});

Другой вариант - иметь событие onchange, как у вас уже есть, и добавить событие onclick, которое удаляет фокус с переключателя:

<input type="radio" name="Q12" value="radio" id="Q12_0" onclick="this.blur()" onchange="nextPnl('Q12');">

Ваш ответ на вопрос