添加 runat="server" 时 Datepicker 不工作
Posted
技术标签:
【中文标题】添加 runat="server" 时 Datepicker 不工作【英文标题】:Datepicker is not working when adding runat="server" 【发布时间】:2017-02-05 20:53:54 【问题描述】:我指的是这个站点http://jqueryui.com/datepicker/ 的日期选择器,我的编码与给出的源代码完全相同。这些编码工作正常。
但是..
当我在这段代码<input type="text" id="datepicker">
中添加 runat="server" 时,单击TextBox
时我的日历不会显示。我需要放置 runat="server" 以便我能够在代码后面使用它。
你们的任何建议将不胜感激。谢谢。
【问题讨论】:
请咨询您的控制台以了解错误 不能直接在代码后面获取js组件。看这里***.com/questions/9032068/… 【参考方案1】:当 runat=server 添加一个母版页时,它会生成带有母版页的默认样式 ID。所以要避免它,请尝试 ClientIDMode="Static"
<input type="text" id="datepicker" runat="server" ClientIDMode="Static">
没有 ClientIDMode='Static' 生成的 html 是
<input type="text" id="MainContent_datepicker" name="ctl00$MainContent$datepicker">
通过使用firebug检查元素
,了解更多信息,请使用firebug for mozilla firefox【讨论】:
【参考方案2】:我找到了正确的方法。
用于 ASP.Net 设计
<asp:TextBox runat="server" id="datepicker"></asp:TextBox>
在客户端服务器端
$(document).ready(function ()
$("[id$=datepicker]").datepicker();
);
输入$("[id$=datepicker]").datepicker();
而不是$('#<%= datepicker.ClientID %>').datepicker();
,那么日历就会显示出来,并且可以在后面的代码中调用datepicker。
【讨论】:
【参考方案3】:当文本框在视图源中为 runat="server" 时,您可以找到生成了动态前缀的文本框的名称。
因此,在您的 javascript 中,您不应该使用标签中指定的 id 属性,而应该使用 这将给出生成的 ID。
【讨论】:
【参考方案4】:试试这个
<script>
$(document).ready(function ()
$("body").delegate("#<%=datepicker.ClientID%>", "focusin", function ()
$(this).datepicker();
);
);
</script>
【讨论】:
以上是关于添加 runat="server" 时 Datepicker 不工作的主要内容,如果未能解决你的问题,请参考以下文章
如果它具有 runat="server" 属性,我如何使 div 可拖动
为啥 ASP.Net 服务器控件声明需要 runat="server" 属性?
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value=&quo