我想将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>
当我选择日期或时间时,firebug会抛出以下错误:
document.getElementById(“ArrivalStart”)为空
这告诉我,JS中无法访问ArrivalStart-Field。
我该如何管理?
格尔茨
托比
答案 0 :(得分:4)
而不是
document.getElementById("ArrivalStart")
使用
document.getElementById("<%= ArrivalStart.ClientId %>")
这样就可以注入ASP.Net创建的ID。
修改强>
这个javascript片段需要在aspx文件中(不是单独的js文件),因为ASP.Net需要处理<%= .. %>
块并需要访问ArrivalStart成员。
答案 1 :(得分:1)
当你创建一个控制runat = server时,c#负责渲染元素。因此,大多数情况下,它会重新编写控件的ID,因为它需要考虑控件的形式,以及它是否嵌套在数据转发器或其他重复控件中。
如果您运行该页面并单击“查看源”,该元素的ID是否仍然等于“ArrivalStart”或者ID已被重写?
如果不是,您可以使用C#将控件的ClientID(Control.ClientID)写入您的jQuery脚本
我可能会在错误的树上狂奔:)