Событие onChange никогда не запускается для <select>в Internet Explorer - PullRequest
4 голосов
/ 08 марта 2010

Я использую jQuery для привязки события к обработчику onChange объекта следующим образом:

$("#accounts").change(function() { DoSomething(); });

Проблема, с которой я столкнулся, заключается в том, что, хотя в Firefox все работает нормально, событие никогда не запускается в IE. Мне известно о том, что IE обрабатывает событие onChange иначе, чем Firefox, как упоминалось здесь среди других мест. Тем не менее, я не думаю, что это проблема в этом случае, так как событие никогда не запускается, даже при нажатии на другие элементы на экране.

Чтобы убедиться, что с моим кодом jQuery не было проблем, я попытался реализовать встроенное событие onChange следующим образом:

<select id="accounts" onChange="DoSomething();">
    <option value="1">Account 1</option>
    <option value="2">Account 2</option>
    {omitted remaining 3000 options of list for brevity}
</select>

но событие все равно не сработало, даже если реализовано таким образом.

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

Ответы [ 2 ]

2 голосов
/ 15 мая 2010

Это может быть решено путем помещения вызова DoSomething из другого потока с использованием его в качестве кода для выполнения в setTimeout при использовании браузера IE.

if (jQuery.browser.msie) { setTimeout(DoSomething, 0); } else { DoSomething(); }

Согласно Microsoft это может произойти из-за возникающего состояния гонки. Пожалуйста, дайте нам знать, если это работает для вас.

2 голосов
/ 08 марта 2010

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

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