Как скрыть ajaxtoolkit calendarextender, когда потерял фокус? - PullRequest
3 голосов
/ 02 декабря 2011

calendarextender problem Привет,

Я хочу скрыть первый календарь, когда открыт второй или когда поле календаря потеряло фокус. Проблема в том, что если пользователь не выбирает какую-либо дату из календаря и переходит к другому элементу управления на странице, календарь не скрывает, только когда пользователь выбирает любую дату из календаря, всплывающее окно скрывается. Этот снимок показывает проблему.

Я вижу, что на странице примера ajaxtoolkit calendarextender элемент управления календаря работает нормально, когда из одного календаря в другое скрывается предыдущее всплывающее окно, но я не могу найти пример кода этой страницы. Я думаю, что эта страница управляет в javascript событием, когда фокус теряется, но я нашел какой-либо пример кода или проекта ...

Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 02 декабря 2011

В качестве опции в дополнение к решениям, предоставляемым dash , вы можете использовать следующее решение, если не хотите использовать ImageButton вместо Image для 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 голосов
/ 02 декабря 2011

Как упоминает Юрий, использование ImageButton исправляет это ... или ...

Вам необходимо обработать событие onmouseout.Вы можете сделать это следующим образом:

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

Или вы можете добавить некоторый javascript (через jQuery) и добавить событие onmouseout:

Добавление дополнительных функцийк атрибуту onmouseout изображения

Это также показано в ссылке форумы форумы.asp.net, но в основном для события onmouseout можно просто установить видимость расширителя календаря на скрытое или нет.

1 голос
/ 12 мая 2015

Попробуйте следующую строку кода, чтобы отобразить календарь как для текстового поля, так и для щелчка изображения.

<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>

, которая должна отображать календарьпри нажатии на текстовое поле, и календарь будет скрыт, если щелкнуть где-либо еще в форме

...