用于DataTypeCheck的jQuery UI datetimepicker和ASP.NET CompareValidator
-
05-07-2019 - |
题
我正在使用带有jQuery UI datepicker的ASP.NET文本框。文本框允许编辑,以便用户可以手动输入日期或清除现有条目。我添加了一个CompareValidator来对文本框执行数据类型检查,这在使用datepicker选择日期后会导致错误。 ASP.NET客户端验证中发生错误:
Microsoft JScript runtime error: 'length' is null or not an object
ValidatorOnChange中发生错误。我怎样才能解决这个问题?是否可以将datepicker与ASP.NET验证器控件一起使用?
我的标记是:
<asp:Label runat="server" AssociatedControlID="uxInstallDate">Install Date</asp:Label>
<asp:TextBox ID="uxInstallDate" runat="server" Columns="10" />
<asp:CompareValidator runat="server" ControlToValidate="uxInstallDate" Operator="DataTypeCheck" Type="Date" Text="*" ErrorMessage="Install Date must be a date." Display="Dynamic" />
请注意,CompareValidator中缺少的ID属性是有意的,添加它并没有什么区别。我的jQuery初始化是:
$(document).ready(function() {
$("#<%= uxInstallDate.ClientID %>").datepicker({ changeMonth: true });
});
其他提示
基于Jamie的解决方案和候补他提供的解决方案,这是我的解决方法,以绕过这种仅在IE上出现的奇怪错误。
我假设datepicker控件选择的日期是有效日期,所以如果它可见,我会隐藏CompareValidator的消息或图像错误。
$(".myControl").datepicker({
onSelect: function() {
if ($.browser.msie) {
if ($(this).next("span").css("display") != "none") {
$(this).next("span").css("display", "none");
}
}
else {
$(this).trigger('change');
}
}
});
希望有帮助
不隶属于 StackOverflow