Элементы управления jQuery, связанные с ASP.NET элементы управления внутри TabContainer внутри UpdatePanel не работают

#jquery #asp.net

#jquery #asp.net

Вопрос:

У меня есть UpdatePanel элемент управления на моей странице, который содержит некоторые ASP.NET элементы управления, которые мне нужно связать с элементами управления jQuery ( DatePicker , TimePicker …):

 <script language="javascript" type="text/javascript">

function $(LoadDateAndTimePickers() {

    $("#"   '<%=fromDateTextBox.ClientID%>').datepicker();
    $("#"   '<%=toDateTextBox.ClientID%>').datepicker();
    $("#"   '<%=fromTimeTextBox.ClientID%>').timepicker({ showPeriod: true });
    $("#"   '<%=toTimeTextBox.ClientID%>').timepicker({ showPeriod: true }));

};

</script>
  

В IE это работает нормально. Однако это не работает в Chrome и FireFox, как мой ASP.NET элементы управления находятся внутри UpdatePanel .

Итак, я обработал событие Sys.WebForms.PageRequestManager EndRequest внутри UpdatePanel , чтобы иметь возможность заставить его работать в упомянутых браузерах.

  <asp:UpdatePanel ID="updatePanel" runat="server">
    <ContentTemplate>
        <script  type="text/javascript" language="javascript">
            Sys.WebForms.PageRequestManager.getInstance().
                add_endRequest(LoadDateAndTimePickers)
        </script>

    .....

</asp:UpdatePanel>
  

Это сработало просто отлично. Но на других страницах я размещаю свойASP.NET элементы управления внутри * AJAX ToolKit *, TabContainer элемент управления внутри UpdatePanel . Здесь endRequest обработка перестает работать, даже если я помещаю скрипт обработки внутри TabContainer элемента управления.

Ценю вашу помощь..

Комментарии:

1. Я отредактировал вопрос, чтобы включить скрипт, который связывает элементы управления jQuery с ASP.NET элементы управления.

Ответ №1:

Возможно, я еще не понял ваш вопрос, но это просто сработало, когда я попробовал это во всех браузерах, которые поддерживает jquery:

Это мой заголовок содержимого:

     <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">

    <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
    <link href="ui/development-bundle/themes/ui-lightness/jquery.ui.all.css" rel="stylesheet"
        type="text/css" />
    <script src="ui/development-bundle/ui/jquery-ui-1.8.12.custom.js" type="text/javascript"></script>
    <script src="ui/development-bundle/ui/jquery.effects.core.js" type="text/javascript"></script>
    <script src="ui/development-bundle/ui/jquery.ui.widget.js" type="text/javascript"></script>
    <script src="ui/development-bundle/ui/jquery.ui.datepicker.js" type="text/javascript"></script>

</asp:Content>
  

и это на странице:

 <asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>


<asp:UpdatePanel ID="pnlAjax" runat="server" ClientIDMode="Static">
    <ContentTemplate>
        <asp:TextBox runat="server" ID='txtMyFirstField'></asp:TextBox>
    </ContentTemplate>
</asp:UpdatePanel>


<script type="text/javascript">
    $(function () {
        $("#pnlAjax input").datepicker();
    });
</script>
  

Ответ №2:

Я предлагаю разместить javascript вне панели обновления.Рендеринг панели обновления не гарантировал, что внутренняя панель javascript будет запущена, и поэтому вы регистрируете EndRequest, чтобы повторно запустить инициализацию javascript после того, как панель обновления обновит его самостоятельно.