3

我想将 datetimepicker 的值传递给我的 Codebehind(C#) 并将其保存到 C# 中的变量中。

我尝试使用隐藏字段,但它不起作用。

这是js代码:

var dates = $("#ArrivalStartDatepicker").datetimepicker({
                            defaultDate: "+lw",
                            dateFormat: 'dd-mm-yy',
                            changeMonth: true,
                            numberOfMonths: 2,
                            ampm: true,
                            stepMinute: 10,
                            minuteGrid: 10,
                            onSelect: function (selectedDate) {
                                    document.getElementById("ArrivalStart").value = dates.datetimepicker('getDate');
                                }
                            });

隐藏区域:

<div>
          <input type="hidden" id="ArrivalStart" runat="server"/> 
</div>

当我选择日期或时间时,萤火虫会引发以下错误:

document.getElementById("ArrivalStart") 为空

这告诉我 ArrivalStart-Field 在 JS 中是不可访问的。

我该如何管理?

问候

托比

4

2 回答 2

4

代替

 document.getElementById("ArrivalStart")

采用

  document.getElementById("<%= ArrivalStart.ClientId %>")

这样您就可以注入 ASP.Net 创建的 ID。

编辑
此 javascript 片段需要位于 aspx 文件(而不是单独的 js 文件)中,因为 ASP.Net 需要处理该<%= .. %>块并需要访问 ArrivalStart 成员。

于 2012-05-24T11:21:20.410 回答
1

当您制作一个控件 runat=server 时,c# 负责渲染元素。因此,大多数时候它会重写控件的 ID,因为它需要考虑控件的形式以及它是否嵌套在数据重复器或其他一些重复控件中。

如果您运行该页面并单击“查看源代码”,该元素的 ID 是否仍等于“ArrivalStart”或是否已重写 ID?

如果不是,您可以使用 C# 将控件的 ClientID (Control.ClientID) 写入您的 jQuery 脚本

不过我可能会叫错树:)

于 2012-05-24T11:10:20.817 回答