将C# Web应用程序更改为使用母版页后,DatePicker不再起作用。

3
我正在开发一个 .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 有人能提供任何帮助,告诉我如何成功引用文本框吗?
提前感谢。
2个回答

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 - <script type="text/javascript" src="../Scripts/jquery-1.4.2.js"></script> 并按照您上面所示的进行了编辑。页面不再出现错误,但选择日期后没有任何反应。日期弹出窗口仍然打开,日期未传输到文本框中。也尝试过 "[id$=TBApplyDate.ClientID]。我是Jquery的完全新手 - 一整天都在Google上尝试各种方法,但毫无进展! - GordonK
在这里使用ClientID绝对是正确的方法,因为每当您进行更改(例如添加主页面、将控件添加到面板等)时,Asp.Net都可以修改它。 - Chris Conway
感谢你的帮助jmein - 你的答案让我找到了正确的方向,然而最终我还是通过以下代码解决了问题: - GordonK

0

在浏览器上右键单击并查看源代码,确保文本框的ID与jQuery例程中指定的ID相同。如果不同,请使用@jmein的答案获取文本框的正确客户端ID。

如果它们相同,则说明您的jquery设置存在问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接