Странная проблема IE с использованием этого jquery / javascript - PullRequest
0 голосов
/ 07 февраля 2011

Я использую следующий код:

ieLessThan8OptionDisable = function() {
if ($.browser.msie && parseFloat($.browser.version) < 8) {
    $("select").find("[disabled]").addClass("disabledforie").removeAttr("disabled");
    $("select").change(function(){
        var selected = $(this).val();
        var disabled = $(this).find("[value="+selected+"]").hasClass("disabledforie");
        if (disabled) {
            alert("This option is disabled.\nSelect will be set to the first option.");
            $(this).find("option:first").attr("selected","selected");
         }
        });
    }
}

По сути, этот код для отключенной опции в выпадающем списке выбора.Он работает отлично, за исключением проблем с юзабилити.

Каждый раз, когда я нажимаю на опцию, которая должна быть отключена в IE, появляется предупреждение, и после этого окно выбора сбрасывается на первую позицию.Все хорошо.Теперь, когда я нажимаю на поле выбора, чтобы открыть раскрывающийся список, оно просто закрывается.В основном я должен нажать на него 2 раза, и в этот момент он открывается.

Я пробовал это в IE6 и IE7.У обоих есть эта проблема.

Любые указатели были бы великолепны!

Спасибо

1 Ответ

2 голосов
/ 07 февраля 2011

Это звучит как проблема фокуса.Поле выбора имеет фокус, когда вы выбираете новую опцию, а затем появляется предупреждение, которое скрывает фокус от элемента выбора.IE должен закрывать окно выбора автоматически при вызове предупреждения, но, увы, они, вероятно, не проверяли этот крайний случай.Таким образом, два клика делают следующее:

  1. Возврат фокуса на выбранный элемент
  2. Выбор элемента в списке

Добавление вызова размытия передВы вызываете оповещение:

if (disabled) {
  this.blur();// add in
  alert("This option is disabled.\nSelect will be set to the first option.");
  $(this).find("option:first").attr("selected","selected");
}

PS - Я на самом деле не проверял это, у меня нет IE, доступного сейчас

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