JQuery выбрать проблему с фокусом окна в Internet Explorer - PullRequest
2 голосов
/ 04 февраля 2010

В следующем «.input» совпадает с тегом.

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

$(".input").focus(function () {
var rc = $(this).parents(".rc-input");
rc.removeClass("rc-input-default");
rc.addClass("rc-input-active");
});

Если я использую mousedown вместо фокуса, это работает, но я не получаю желаемого эффекта при табуляции?

<div class="rc-input">
   <select class="input">
   ...
   </select>
</div>

Ответы [ 3 ]

3 голосов
/ 04 февраля 2010

Это ошибка в IE. Когда вы вносите какие-либо изменения в поле выбора в IE до версии 8 (включая косвенные изменения стиля посредством изменения имен классов), он воссоздает базовый выпадающий виджет Windows, который имеет побочный эффект сброса его в закрытое состояние.

В IE6-7 в качестве обходного пути вы можете использовать onfocusin вместо onfocus; так как это происходит до того, как выделение сфокусировано, рестайлинг не закрывает элемент управления. Или просто используйте простое правило CSS :focus вместо изменения класса, и пользователи IE6-7 могут отказаться от подсветки ввода. (Они не заслуживают симпатий!)

См. этот ответ , например, код, объединяющий эти подходы.

2 голосов
/ 04 февраля 2010

Из документации jQuery:

Событие фокуса не всплывает в Internet Explorer. Поэтому сценарии, которые полагаются на делегирование события с событием focus, не будут работать согласованно во всех браузерах.

0 голосов
/ 04 февраля 2010

Вы можете справиться как с mousedown, так и с фокусом.

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