【问题标题】:0x800a138f - JavaScript runtime error: Unable to get property 'split' of undefined or null reference0x800a138f - JavaScript 运行时错误:无法获取未定义或空引用的属性“拆分”
【发布时间】: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


【解决方案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);

【讨论】:

    猜你喜欢
    • 2015-07-07
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多