当我激活生成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&lt; 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已经提供了解决方案,因此按原样行事是好的!
答案 0 :(得分:1)
这是fix / hack / kludge(添加一个空的onSelect处理程序):
$("#PickerDateTextBox").datepicker({
showOn: "button",
onSelect: function() {},
buttonImage: "images/picker.gif",
buttonImageOnly: true
});
并解释: Jquery datepicker popup not closing on select date in IE8