我们最近将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年回复了related question并获得了very good answer。
我已尝试实现这一点,并打破了该功能的“更新下拉列表”部分。
通过调用此函数初始化控件,将控件作为$ 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函数是更新下拉列表的函数。
使用上面答案中链接的修补程序,似乎没有触发更改事件。
我该怎么做才能解决这个问题?
答案 0 :(得分:2)
此刻我会升级到1.5.2,因为1.6 +中可能存在一些潜在的突破变化