Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 当我在AJAX UpdatePanel中使其可见时,DatePicker没有在文本框中启动 _Jquery_Asp.net_Ajax - Fatal编程技术网

Jquery 当我在AJAX UpdatePanel中使其可见时,DatePicker没有在文本框中启动

Jquery 当我在AJAX UpdatePanel中使其可见时,DatePicker没有在文本框中启动 ,jquery,asp.net,ajax,Jquery,Asp.net,Ajax,最初加载页面时,上面的文本框不可见。当用户单击其他下拉列表并进行选择时,我使其可见。文本框出现了,但我使用的Jquery日期选择器没有启动,因为文本框是使用AJAX UpdatePanel显示的,它的HTML不会添加到页面中 有关于如何修复的指导吗 我正在下面粘贴Jquery <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:UpdateP

最初加载页面时,上面的文本框不可见。当用户单击其他下拉列表并进行选择时,我使其可见。文本框出现了,但我使用的Jquery日期选择器没有启动,因为文本框是使用AJAX UpdatePanel显示的,它的HTML不会添加到页面中

有关于如何修复的指导吗

我正在下面粘贴Jquery

 <asp:ScriptManager ID="ScriptManager1" runat="server">
 </asp:ScriptManager>
      <asp:UpdatePanel ID="UpdatePanel1" runat="server">
         <ContentTemplate>
            <p runat="server">
            <asp:Label ID="lblDOA" runat="server" Text="Appointment Date :"   Height="21px" 
                Width="136px" Visible="False"></asp:Label>
            <asp:TextBox ID="txtDOA" runat="server" CssClass="fieldz" AutoPostBack="false" 
                Visible="False" ViewStateMode="Enabled"></asp:TextBox>
        </p>
         </ContentTemplate>
       </asp:UpdatePanel>

jQuery(函数($){
//$(“#发生日期文本框”).mask(“99/99/9999”);
$(“#”)日期选择器();
//$(“.datepicker”).datepicker();
});

如果执行jQuery代码时HTML元素不是DOM的一部分,那么情况确实如此。您可能想做的是在将jQuery代码添加到DOM之后将其绑定到元素。看看jQuery的函数。它基本上会监视添加到DOM中的元素,并对它们应用绑定

由于日期选择器绑定发生在插件内部,因此您还需要做一件额外的事情来实现这一点。日期选择器的常规代码行没有live()语法。然而,您实际上想要做的是在新添加的元素具有焦点后立即运行插件。(毕竟,在元素聚焦之前,日期选择器不是特别有用。)因此,您需要使用live()绑定到“focus”事件。大概是这样的:

 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.js"
    type="text/javascript"></script>
<script type="text/javascript">
    jQuery(function ($) {
        //$("#occurrence_dateTextBox").mask("99/99/9999");
        $("#<%= txtDOA.ClientID %>").datepicker();
        //$(".datepicker").datepicker(); 
 </script>
    });
$('#').live('focus',function(){
$(this.datepicker();
});

找到了更简单的解决方法

如果在面板中包装文本框,并在表单加载时将面板设置为visible=false,然后在Ajax部分回发时将其更改为visible=true,则Jquery可以很好地处理文本框

这是我在上面代码中的解决方法

$('#<%= txtDOA.ClientID %>').live('focus', function() {
  $(this).datepicker();
});



您还可以在异步回发后重新绑定日期选择器。.NET更新面板会自动调用pageLoad函数,这将允许您多次隐藏和显示,而不仅仅是一次

<asp:Panel ID="Panel1" runat="server" Visible="false">
            <p>
                <asp:Label ID="lblDOA" runat="server" Text="Appointment Date :" Height="21px" Width="136px"
                    Visible="true"></asp:Label>
                <asp:TextBox ID="txtDOA" runat="server" CssClass="fieldz" AutoPostBack="false" Visible="true"
                    ViewStateMode="Enabled"></asp:TextBox>
            </p>
        </asp:Panel>
函数pageLoad(){$(“#”)datepicker();}

然后,您需要在添加输入时添加日期选择器,而不是在文档准备就绪时。发布您用来加载输入的js,我们可能会提供帮助。这似乎解决了您的问题。更新面板后,需要初始化日期选择器。它似乎不推荐使用Live,我应该使用delegate或on,如下所示,$(document).delegate('#','focus',function(){$(this.datepicker();});然而,我仍然要弄清楚第一部分。
function pageLoad(){ $("#<%= txtDOA.ClientID %>").datepicker(); }