3

日历扩展问题你好,

我想在第二个日历打开或日历字段失去焦点时隐藏第一个日历。问题是,如果用户没有从日历中选择任何日期并转到页面中的其他控件,则日历不会隐藏,只有当用户从日历中选择任何日期时,弹出窗口才会隐藏。此捕获显示了问题。

我看到在 ajaxtoolkit calendarextender 示例页面中,日历控件工作正常,当从一个到另一个日历之前弹出窗口隐藏但我没有找到此页面的示例代码。我认为这个页面在 javascript 中管理焦点丢失时的事件,但我找到了任何示例代码或项目......

先感谢您!

4

3 回答 3

2

作为dash提供的解决方案之外的一个选项,如果您不想使用PopupButtonImageButton代替,您可以使用以下决定:将扩展程序上的属性设置为并添加到下面的页面脚本中。ImageOnClientShowing"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);
               }
          }
     }
}
于 2011-12-02T10:41:08.343 回答
2

正如 Yuri 提到的,使用 ImageButton 可以解决这个问题......或者......

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

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

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

向图像的 onmouseout 属性添加额外的功能

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

于 2011-12-02T10:05:45.580 回答
1

尝试以下代码行以在文本框和图像单击上显示日历。

<asp:TextBox runat="server" onclick="showCalendar();" onfocusout="showCalendar();" ID="txtDate" />
    <asp:ImageButton runat="Server" ID="imgPopup" AlternateText="Click to show calendar" />
    <cc1:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="txtDate" CssClass="MyCalendar" Format="MMMM d, yyyy" PopupButtonID="imgPopup" />

并添加一个像这样的javascript函数

<script type="text/javascript">
        function showCalendar() {
       $( "#<%=imgPopup.ClientID %>" ).trigger( "click" ); //I've used .ClientID here just in case your page is inherited from a Master page
    }
    </script>

当您单击文本框时应该会显示日历,并且一旦您单击表单上的其他任何位置,日历就会被隐藏

于 2015-05-12T09:47:09.597 回答