Проблема с датой выбора jQuery в IE после обновления до 1.6.1 и jQueryUI 1.8.12 - PullRequest
0 голосов
/ 13 мая 2011

Недавно мы обновили jQuery с 1.4.2 до 1.6.1 и jQueryUI с 1.8.4 до 1.8.12.

В нашем тестировании у нас не было серьезных проблем, кроме одного:

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

'length' is null or not an object

WebResource.axd

До этого обновления это работало нормально во всех современных браузерах.После обновления он перестал работать в IE (64-битная машина под управлением Windows 7, IE 8, режим совместимости не имеет значения) для наших тестировщиков.Кажется, он все еще работает в XP.

связанный вопрос был задан еще в '09, и он получил очень хороший ответ .

Я попытался реализовать это, и это нарушает часть функциональности «Обновить выпадающий список».

Элемент управления инициализируется путем вызова этой функции, передавая элемент управления как $ scope:

function InitializeCalendarDateControl($scope) {
CalendarDateControl_FirstTimeThrough = true;

$("input.date", $scope).datepicker({ changeMonth: true, changeYear: true, yearRange: '1850:c+5'});  

var groupedControls = $("div.CalendarDateControlCssClass[groupname!=]", $scope);


    --snip some control hiding stuff
    --snip some time format validation stuff


if (!$scope.hasClass("CalendarDateControlCssClass")) {
    $("input.hasDatepicker, input.hh, input.mm, select.dates, select.ampm", $scope).live("change", function () {
        CalendarDateControl_FirstTimeThrough = false;
        updateControls($(this));
    });

    if (groupedControls.length > 0) {
        $("div.CalendarDateControlCssClass", $scope).each(function () {
            updateControls($(this).children("input:eq(0)"));
        });
    }
} else {
    $("input.hasDatepicker, input.hh, input.mm, select.dates, select.ampm", $scope).live("change", function () {
        CalendarDateControl_FirstTimeThrough = false;
        updateControls($(this));
    });
    if (groupedControls.length > 0) {
        updateControls($scope.children("input:eq(0)"));
    }
}
}

Функция updateControls - это функция, которая обновляет выпадающий список.

При использовании исправления, указанного в ответе выше, события изменения не срабатывают.

Что я могу сделатьэто исправить?

1 Ответ

2 голосов
/ 16 мая 2011

Лично я бы обновился до 1.5.2 на данный момент, так как, возможно, в 1.6 +

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