#jquery #internet-explorer #jquery-ui
#jquery #internet-explorer #jquery-ui
Вопрос:
Недавно я столкнулся с проблемой в IE, используя скрипт jQuery UI datepicker:
-
Загрузите страницу с указателем даты на ней, отображающим выпадающие списки «год» и «месяц».
-
Выберите дату (в первый раз это работает нормально).
-
Откройте datepicker снова, но на этот раз, когда вы нажимаете на один из выпадающих списков год / месяц, он появляется ненадолго, а затем исчезает, и для его корректного отображения требуется второй щелчок.
У меня есть небольшая тестовая страница (см. Ниже), и я протестировал ее с использованием 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:
Если вы посмотрите на здесь не уменьшенный исходный код (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 amp;amp; inst._selectingMonthYear) {
setTimeout(function() {
inst.input.focus();
}, 0);
}
inst._selectingMonthYear = !inst._selectingMonthYear;
},
Удаление setTimeout()
вызова устраняет проблему фокусировки в IE6 для меня. Не уверен, каким может быть побочный эффект. Я выбрал несколько дат с локально измененным jquery-ui, и, кажется, что он все еще нормально работает в Chrome12 и IE6. Может быть, один из них для команды jquery-ui?
Редактировать Обнаружен отчет об ошибке — похоже, он запланирован на 1.8.3
Комментарии:
1. Спасибо за просмотр — пробовал поиграть с этой функцией, но она не заработала. Посмотрим на это снова.
2. Обратите внимание, что может пройти некоторое время, пока они это исправят — 1.8.12 — текущая стабильная версия, и этот билет был открыт почти шесть месяцев.
3. Ах да, он был открыт некоторое время. Однако в отчете об ошибке содержится исправление, чтобы вы могли применить это различие, чтобы заставить его работать в то же время.