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

jQuery UI日期时间选择器和ASP。NET CompareValidator用于数据类型检查

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

    我正在使用ASP。NET文本框,带有jQuery UI日期选择器。文本框允许编辑,以便用户可以手动输入日期或清除现有条目。我添加了一个CompareValidator来对文本框执行数据类型检查,这会导致在使用日期选择器选择日期后出错。错误发生在ASP中。NET客户端验证:

    Microsoft JScript runtime error: 'length' is null or not an object
    

    ValidatornChange中发生错误。我该怎么解决这个问题?是否可以将日期选择器与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" />
    

    $(document).ready(function() {
        $("#<%= uxInstallDate.ClientID %>").datepicker({ changeMonth: true });
    });
    
    2 回复  |  直到 16 年前
        1
  •  7
  •   Jamie Ide    16 年前

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

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

    here 以及另一种解决方案 here .

        2
  •  0
  •   Ghislain Proulx    14 年前

    基于Jamie和 the alternate

    我假设日期选择器控件选择的日期是有效日期,因此如果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');
            }
        }
     });
    

    希望有帮助