我在一个文本框上设置了一个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>
答案 0 :(得分:1)
尝试使用arr[n]
代替arr.split('/')[n]
。
var arr = comp.split('/');
var m = parseInt(arr[0], 10);
var d = parseInt(arr[1], 10);
var y = parseInt(arr[2], 10);