代码之家  ›  专栏  ›  技术社区  ›  Jamie Ide

用于数据类型检查的jQuery UI datetimepicker和ASP.NET CompareValidator

  •  2
  • Jamie Ide  · 技术社区  · 15 年前

    我将ASP.NET文本框与jQueryUIDatePicker一起使用。文本框允许编辑,以便用户可以手动输入日期或清除现有条目。我添加了一个CompareValidator来对文本框执行数据类型检查,这会在使用日期选择器选择日期后导致错误。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 });
    });
    
    2 回复  |  直到 15 年前
        1
  •  7
  •   Jamie Ide    15 年前

    我想我找到了解决办法。这是IE中出现的错误,而不是Firefox(我没有测试任何其他浏览器)。解决方案是在初始化中重写onSelect方法:

    $("#<%= uxInstallDate.ClientID %>").datepicker({ changeMonth: true, onSelect: function() { } });
    

    我找到了问题和解决方案的描述 here 还有另一种解决方案 here .

        2
  •  0
  •   Ghislain Proulx    13 年前

    基于Jamie和 the alternate 他提供的解决方案是,这里是我绕过这个只有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');
            }
        }
     });
    

    希望能有所帮助