Jquery 当我在AJAX UpdatePanel中使其可见时,DatePicker没有在文本框中启动
最初加载页面时,上面的文本框不可见。当用户单击其他下拉列表并进行选择时,我使其可见。文本框出现了,但我使用的Jquery日期选择器没有启动,因为文本框是使用AJAX UpdatePanel显示的,它的HTML不会添加到页面中 有关于如何修复的指导吗 我正在下面粘贴JqueryJquery 当我在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
<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(); }