当我激活生成 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 有交付了解决方法,因此可以按原样进行!