3

Я столкнулся с проблемой, когда jQuery UI's Datepicker заставляет Internet Explorer (версии 8 и 9, а может быть и другие) иногда (но не всегда) сбой. IE падает примерно на 25% времени при загрузке страницы или после использования поля datepicker. Это может быть или не быть особенным для Windows 7. Я могу воспроизвести проблему, используя различные версии jQuery от 1.6.2 до 1.7.1.jQuery UI Datepicker Заставляет Internet Explorer сбой

http://jsfiddle.net/wLW8D/

<script> 
    $(function() { 
     $('#someDate').datepicker(); 
    }); 
</script> 

<input type="text" name="someDate" id="someDate" value=""> 

я могу получить IE врезаться довольно легко перейти на jsfiddle страницу, а затем начать играть вокруг (обновления, выбрать дату, вкладку из поля и т.д.).

При сбое IE появляется диалоговое окно: «Internet Explorer перестает работать - проблема привела к тому, что программа перестала работать правильно. Windows закроет программу и сообщит вам, будет ли доступно решение». Журнал событий показывает ошибку приложения с идентификатором события 1000.

Любые предложения?

~~~~~~~~~

UPDATE: Это было разрешится, но я не решаюсь, чтобы отметить это как ответ или предоставить реальный ответ, потому что я не понимаю, что было изменено, чтобы сделать он работает. Все возникающие проблемы происходили на виртуальной машине, которая была распространена ИТ-персоналом. ИТ-персонал кое-что изменил на виртуальной машине (предположительно, в Windows, возможно?), И проблема была решена.

+0

Здесь нет проблем, IE8/Win7 – Blazemonger

+1

Это звучит как проблема с йо ур машина. Я могу просмотреть jsFiddle и щелкнуть поле - и пока параметр datepicker не создан, он все равно отображается и реагирует на события соответствующим образом. Я просил его 8 раз в IE9 и никогда не был сбой. – Tejs

+0

Это не уникально для моей машины. Это происходит на всех машинах, которые я проверил в офисе. Пока что все Windows 7 Pro. –

ответ

0

Если я что-то подобное, когда инициализируется Datepicker элементы, которые были предложены кем-то в Интернете:

$('.DatePicker').datepicker({ 
    onChangeMonthYear: function(year, month, inst) { 
    var now = new Date(this.value); 
    if (now) { 
     var max = new Date(year, month, 0).getDate(); 
     var day = now.getDate() > max ? max : now.getDate(); 
     var newDate = new Date(year, month-1, day); 
     inst.input.datepicker('setDate', newDate); 
    } 
    } 
}); 

(. Конечно, я прилагаю класс = DatePicker при требуемых входных элементов)

затем IE всегда сбой при изменении даты.

Если я опускаю onChangeMonthYear обработчик или просто комментирую строку inst.input.datepicker ..., проблема исчезает (конечно, в этом случае также исчезает требуемая функциональность).

Так что я сделал еще несколько экспериментов, и понял, что проблема находится в первой строке:

var now = new Date(this.value); 

Здесь мы попытаемся построить переменную Date из значения поля ввода. Похоже, что IE не создает, когда формат локализован (как у меня венгерский), поэтому результатом будет NaN. Похоже, это настоящая проблема. Во всяком случае для меня было странно, что Chrome и Firefox работают правильно.

Так что я изменил свою первую линию в:

var now = inst.input.datepicker('getDate'); 

И нет аварии больше.

В нижней строке я обнаружил другое странное поведение: для DatePicker был показан небольшой прямоугольник. Это вызвало некоторые ошибки, когда мышь. Но я нашел решение и для этого добавить небольшой кусочек CSS после jquery.ui.css в моем основном шаблоне:

#ui-datepicker-div 
{ 
    display: none; 
} 

Так что я счастлив, что это работает в IE6, Chrome, Firefox, как я хотел.

Вот мой окончательный код инициализации для DatePicker:

$('.DatePicker').datepicker({ 
    onChangeMonthYear: function(year, month, inst) { 
    var now = inst.input.datepicker('getDate'); 
    if (now) { 
     var max = new Date(year, month, 0).getDate(); 
     var day = now.getDate() > max ? max : now.getDate(); 
     var newDate = new Date(year, month-1, day); 
     inst.input.datepicker('setDate', newDate); 
    } 
    } 
}); 

и мой DateTimePicker, а также:

Я использую JQuery 1.7.1 и jquery.ui.1.8.16

Miklos

Смежные вопросы