【发布时间】:2014-09-09 15:01:55
【问题描述】:
我在一个文本框上设置了一个 asp 自定义验证器,该文本框附加了一个 jQuery 日期选择器。
验证器在 Chrome 和 FireFox 上工作得很好,但是当我在 IE 中运行它时,我收到以下错误消息:0x800a138f - JavaScript runtime error: Unable to get property 'split' of undefined or null reference。我做错了什么?
下面是我的验证函数和 HTML 代码。
编辑:将 JS 函数修改为以下,但现在我得到了一个不同的错误: Object doesn't support property or method 'split'
JavaScript:
function isValidDate(source, datetovalidate) {
if (datetovalidate != null) // null handing
{
var comp = String(datetovalidate);
if (comp != null && comp != undefined)
{
var arr = comp.split('/');
var m = parseInt(arr.split('/')[0], 10);
var d = parseInt(arr.split('/')[1], 10);
var y = parseInt(arr.split('/')[2], 10);
var date = new Date(y, m - 1, d);
}
var date = new Date(y, m - 1, d);
} else {
return false;
}
if (date.getFullYear() == y && date.getMonth() + 1 == m && date.getDate() == d) {
//Valid date
return true;
} else {
//Invalid date
return false;
}
}
HTML:
<asp:Label ID="lblDueDate" runat="server" AssociatedControlID="dpDueDate">Due Date:
<span class="required">*</span></asp:Label>
<asp:TextBox ID="dpDueDate" runat="server" MaxLength="10" />
<asp:CustomValidator ID="cvDueDate" runat="server" ControlToValidate="dpDueDate"
OnServerValidate="IsValidDate" ClientValidationFunction="isValidDate"
ErrorMessage="Please enter a valid date" ForeColor="red"
ValidateEmptyText="True"></asp:CustomValidator>
【问题讨论】:
-
显然
comp.split('/')[3];返回undefined。所以,comp不包含一个值,在/上拆分会返回一个由 4 个元素组成的数组。解决方案:首先验证您的输入字符串。 -
如果
datetovalidate包含09/09/2014并且您希望arr包含['09','09','2014'],只需使用var arr = comp.split('/');。
标签: c# javascript .net internet-explorer