将 C# webapp 更改为使用母版页后,DatePicker 不再工作
Posted
技术标签:
【中文标题】将 C# webapp 更改为使用母版页后,DatePicker 不再工作【英文标题】:DatePicker no longer working after changing a C# webapp to use a master page 【发布时间】:2011-01-20 04:02:12 【问题描述】:我正在开发一个 .Net/C# Web 应用程序,并且一直在使用基于 javascript 的日历来允许用户选择日期。这一直运行良好。
今天我更改了代码以包含母版页,并且从子页调用的日期选择器已停止工作,问题是返回日期的文本框不再有效,因为表单声明现在位于母版页上。
代码是
href="javascript:;" onclick="calendarPicker('form1.TBApplyDate');" title="Select Date from Calendar">Select
“错误行:1 错误:'window.opener.document.form1.TBApplyDate' 为空或不是对象”
我在网上看到了很多收集文本框客户端 ID 并以下面的各种排列方式传递它的示例,但我总是遇到同样的错误。
href="javascript:;" onclick="calendarPicker('ctl00_MainContent_TBApplyDate');" title="Select Date from Calendar">Select
href="javascript:;" onclick="calendarPicker(form1.<%=TBApplyDate.ClientID%>');" title="Select Date from Calendar">Select
任何人都可以就如何成功引用文本框提供任何帮助吗?
提前致谢。
【问题讨论】:
【参考方案1】:这是因为元素 ID 被母版页“破坏”了
我建议使用jQuery 及其选择器来帮助您获取必要的控件
在 jquery 中,您可以像这样获取控件:
$('[id$=myContrl]')
因此你应该能够做到这一点
<a href="javascript:;" onclick="calendarPicker($('[id$=TBApplyDate]'));" title="Select Date from Calendar">Select</a>
编辑: 你也可以试试这个
<a href="javascript:;" onclick="calendarPicker($('#<%= TBApplyDate.ClientID %>'));" title="Select Date from Calendar">Select</a>
【讨论】:
感谢您的指点,不幸的是我无法让它工作。我引用了 JQuery - 并编辑了如上所示的行。该页面不再出错,但选择日期不会导致任何事情发生。日期弹出窗口保持打开状态,日期不会传输到文本框。还尝试了“[id$=TBApplyDate.ClientID]。我是 Jquery 的新手——整天在谷歌上搜索各种东西,但一无所获! 使用 ClientID 绝对是最好的选择,因为 Asp.Net 可以随时修改它,例如添加母版页、将控件添加到面板等。跨度> 感谢您的帮助 jmein - 您的回答让我朝着正确的方向前进,但我最终得到了它的使用.. 【参考方案2】:右键单击浏览器并查看源代码并确保文本框的 ID 和 jQuery 例程中指定的 ID 相同。如果没有,请使用@jmein 的答案来获取文本框的正确客户端 ID。
如果它们相同,那么你的 jquery 设置有问题。
【讨论】:
以上是关于将 C# webapp 更改为使用母版页后,DatePicker 不再工作的主要内容,如果未能解决你的问题,请参考以下文章
Jquery 不能在使用 ASP.NET C# 的母版页中工作,并且在不使用母版页的情况下工作正常