1

当我激活生成 DatePicker 的 jQuery-UI 脚本时,我收到了一个神秘的(对我而言)javascript 错误。如果我在 Visual Studio 中并告诉它忽略错误,它可以工作。选定的日期会根据需要生成并放入文本框中。但是为什么会出现这个错误? 它仅在存在并涉及验证错误时发生。

好的,这里是代码。首先是asp.net页面标记:

<asp:TextBox ID="PickerDateTextBox" runat="server" Width="100" ></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
    ErrorMessage="This is required"
    ControlToValidate="PickerDateTextBox"
    >
</asp:RequiredFieldValidator>

这是jQuery:

<script type="text/javascript">
    $(document).ready(function () {
        $("#PickerDateTextBox").datepicker({
        showOn: "button",
        buttonImage: "images/picker.gif",
        buttonImageOnly: true
        });
    });
</script>

当然,包括:

<script src="Scripts/jquery-1.7.1.js"></script>
<script src="Scripts/jquery-ui-1.10.2.js"></script>

不用担心,即使使用 jquery 1.9,我也能做到这一点。

该错误不在 jQuery 或 jQuery-UI 中,而是在 Microsoft 的 javascript 中,如下所示:

var vals;
if (typeof(targetedControl.Validators) != "undefined") {
    vals = targetedControl.Validators;
}
else {
    if (targetedControl.tagName.toLowerCase() == "label") {
        targetedControl = document.getElementById(targetedControl.htmlFor);
        vals = targetedControl.Validators;
    }
}
var i;
for (i = 0; i < vals.length; i++) {
    ValidatorValidate(vals[i], null, event);
}
ValidatorUpdateIsValid();

在“i < vals.length;”的行上抛出错误 发生,错误是:

Unhandled exception at line 172, column 17 in http://localhost...blah blah blah
0x800a138f - Microsoft JScript runtime error: Unable to get value of the property 'length': object is null or undefined

同样,如果我在那里没有验证控件(任何类型),则不会发生这种情况。

任何想法正在发生什么以及如何解决它?

编辑添加:

正如@Steve-Wellens 指出的那样,在 .NET 4.5 和 jQuery 1.9.1 上运行时,它运行正常。同样在 .NET 4.0 上。不幸的是,由于服务器限制,我需要它在 .NET 3.5 上工作(我们的 Web 服务器是 Windows 2003,无法在其上安装 .NET 4.5。我想我可以将应用程序设置为运行 .NET 4.0,但 @Steve-Wellens 有交付了解决方法,因此可以按原样进行!

4

1 回答 1

1

这是修复/破解/kludge(添加一个空的 onSelect 处理程序):

$("#PickerDateTextBox").datepicker({
    showOn: "button",
    onSelect: function() {},
    buttonImage: "images/picker.gif",
    buttonImageOnly: true
});

和解释: Jquery datepicker popup not close on select date in IE8

于 2013-04-19T02:06:05.643 回答