【问题标题】:CalendarExtender not getting hide on clicking outside the calendarCalendarExtender 在日历外部单击时没有隐藏
【发布时间】:2013-04-08 16:00:36
【问题描述】:

我遇到了CalendarExtendar 控件隐藏功能的问题。

我在图像点击时显示日历。如果我选择一个日期,它会隐藏;但是当我不想从日历中选择任何日期时它不会隐藏。

我发现这种情况只发生在我的应用程序中。我尝试在示例应用程序中使用相同的控件,它工作正常。

是不是因为我的项目里面实现了MasterPage

请提出建议。

【问题讨论】:

    标签: asp.net webforms master-pages


    【解决方案1】:

    你可以试试这个 您需要处理 onmouseout 事件。你可以这样做:

    http://forums.asp.net/p/1182269/4708411.aspx/1?Re+Calendarextender+and+Lose+Focus+Or+Mouse+Out

    或者您可以添加一些 javascript(通过 jQuery)并注入一个 onmouseout 事件:

    为图像的 onmouseout 属性添加额外的功能 链接Adding extra functions to an image's onmouseout attribute

    这也显示在 forums.asp.net 链接中,但基本上,在 onmouseout 事件中,您可以将日历扩展器的可见性设置为隐藏或无。

    --------------------------OR CAN TRY BELOW CODE-----------------------------
    
        function calenderShow(sender,args){
    
            var calendar=$find('bi');
            calendar._container.onblur=function(){ 
             calendar.hide();
              };
            }
    

    【讨论】:

    • 我认为你使用了 而不是 这对你有帮助
    【解决方案2】:

    也可以试试 作为 dash 提供的解决方案之外的一个选项,如果您不想为 PopupButton 使用 ImageButton 而不是 Image,则可以使用以下决定:将扩展程序上的 OnClientShowing 属性设置为“hideAnotherOpenedPoups”并添加到下面的页面脚本中。

    // Array of BehaviorIds of each extender for those you use Image as PopupButton
    var behaviorIds = ["CalendarExtender1", "CalendarExtender2"];
    
    function hideAnotherOpenedPoups(sender) {
         for (var index = 0; index < behaviorIds.length; index++) {
              if (behaviorIds[index] !== sender.get_id()) {
                   var extender = $find(behaviorIds[index]);
                   if (extender.get_isOpen()) {
                        extender.hide.call(extender);
                   }
              }
         }
    

    }

    【讨论】:

      【解决方案3】:

      我使用了一个文本框控件和一个日历控件,但是在单击日历日期页面后会发生回发,并且在该日历没有隐藏之后。我尝试了所有方法,但它从来没有奏效。请找到以下代码。

      <asp:TextBox ID="txtFromDateSubmit" runat="server" TabIndex="7" CssClass="calendar" OnTextChanged="txtFromDateSubmit_TextChanged" AutoPostBack="True" MaxLength="12" AutoCompleteType="Disabled"></asp:TextBox>
      <asp:CalendarExtender ID="ceBatchDateSubmit" runat="server" Format="dd/MM/yyyy" TargetControlID="txtFromDateSubmit"></asp:CalendarExtender>
      

      之后我错误地删除了 TabIndex 并且它开始为我工作。如果你们有同样的问题并且它与我的代码匹配,你可以试试。

      【讨论】:

        猜你喜欢
        • 2012-07-17
        • 2011-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-24
        相关资源
        最近更新 更多