CalendarExtender在日历外点击时不会隐藏

时间:2013-04-08 16:00:36

标签: asp.net webforms master-pages

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

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

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

是因为我的项目中已实现MasterPage吗?

请建议。

3 个答案:

答案 0 :(得分:0)

你可以试试这个 您需要处理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();
          };
        }

答案 1 :(得分:0)

可以尝试这个 作为破折号提供的解决方案的一个选项,如果您不想使用ImageButton而不是Image for PopupButton,可以使用以下决定:将扩展程序上的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);
               }
          }
     }

}

答案 2 :(得分:0)

我拿了一个文本框控件&amp;一个日历控件,但点击日历日期页后发回,并在该日历后没有隐藏。我尽力而为,但它永远不会奏效。请找到以下代码。

<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 ,它开始为我工作。如果你们有同样的问题并且它与我的代码匹配,你可以尝试一下。