【问题标题】:DatePicker no longer working after changing a C# webapp to use a master page将 C# webapp 更改为使用母版页后,DatePicker 不再工作
【发布时间】: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


任何人都可以就如何成功引用文本框提供任何帮助吗?

提前致谢。

【问题讨论】:

    标签: javascript asp.net visual-studio-2008 master-pages datepicker


    【解决方案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 设置有问题。

    【讨论】:

      最近更新 更多