JQuery UI datepicker - проблема с IE при использовании выпадающих списков год / месяц - PullRequest
6 голосов
/ 28 апреля 2011

Недавно я столкнулся с проблемой в IE, используя скрипт datepicker пользовательского интерфейса jQuery:

  1. Загрузите страницу с указателем даты, показывающую выпадающий список года и месяца.

  2. Выберите дату (это нормально работает в первый раз).

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

У меня есть небольшая тестовая страница (см. ниже), и я проверил этоиспользуя jQuery 1.4.4 и jQuery UI 1.8.10 (моя производственная конфигурация) и jQuery 1.5.2 и jQuery UI 1.8.12 и смог воспроизвести его в обоих случаях (используя IE9, а также в IE6).

<head>
<script type="text/javascript">

    $(document).ready(function () {

        $("#testDate").datepicker({changeYear:true, 
                    changeMonth:true, 
                    constrainInput:true, 
                    buttonText:'Choose', 
                    showOn:'both', 
                    showButtonPanel:false, 
                    buttonImageOnly:true});
    });

</script>
</head>
<body>
    <h2>Test</h2>
    <input type="text" id="testDate" />
</body>

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

1 Ответ

4 голосов
/ 28 апреля 2011

Если вы посмотрите на не минимизированный источник здесь (1.8.12), то рассматриваемая функция такова:

/* Restore input focus after not changing month/year. */
_clickMonthYear: function(id) {
    var target = $(id);
    var inst = this._getInst(target[0]);
    if (inst.input && inst._selectingMonthYear) {
        setTimeout(function() {
            inst.input.focus();
        }, 0);
    }
    inst._selectingMonthYear = !inst._selectingMonthYear;
},

Удаление вызова setTimeout() останавливает проблему фокусировки в IE6 для меня. Не уверен, что побочный эффект может быть, хотя. Я выбрал несколько дат с локально измененным jquery-ui, и он кажется все еще работает нормально в Chrome12 и IE6. Может быть один для команды jquery-ui?

Редактировать Найден отчет об ошибке - похоже, он запланирован на 1.8.3

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