runat =“server”正在打破我的jquery。我有两个输入,但出于测试目的,只在其中一个中添加了runat =“server”。实际上,我需要加上两者。
您可以在下面找到触发datetimepicker的JS脚本: 注意:dateTo设置了runat =“server”,并尝试改变JS尝试获取其ID的方式,但仍无效。
<script>
$(function(){
$("#dateFrom").datetimepicker();
$("#<%=dateTo%>").datetimepicker();
});
</script>
在这里,您可以使用runat =“server”找到HTML输入,或者不使用asp.net代码。
<tr>
<td>
<input type="text" id="dateFrom" name="dateFrom" value="" class="dateFrom" />
</td>
<td >
<input type="text" id="dateTo" name="dateTo" runat="server" value="" class="dateTo" />
</td>
</tr>
有人有任何想法,暗示.....? 谢谢
答案 0 :(得分:7)
使用ClientID
获取生成的Id
服务器端控件:
$("#<%=dateTo.ClientID%>").datetimepicker();
ASP.NET将从服务器端控件的id
属性生成不同的特定id
属性,因此您需要按顺序使用生成的值从jQuery访问它。
答案 1 :(得分:3)
由于您提供的是班级名称,我建议您使用这些名称。
$(function(){
$(".dateTo, .dateFrom").datetimepicker();
});
或者,您可以在表单上的任何“日期”字段中提供“日期”类别并使用:
$(function(){
$(".date").datetimepicker();
});
这是客户端验证的常见模式,也允许您通过CSS样式提供上下文线索。
答案 2 :(得分:1)
如果您使用的是.NET 4,则可以将ClientIDMode
属性设置为Static
。这将阻止框架更改元素的ID:
<input type="text" id="dateTo" name="dateTo" runat="server"
ClientIDMode="Static" class="dateTo" value="" />
答案 3 :(得分:0)
ASP.NET会在添加runat=server
时将输入视为服务器端控件,这将导致这些输入的已转换标识符,以便它们以容器前缀开头(类似于ctl00_
),因此'打破'你的jQuery选择器。
如果您使用的是.NET 4,则可以通过更改ClientIDMode来禁用这些转换。否则,您需要在选择器中包含前缀,或者重构您的选择器以使其独立于ID,并且通过其他方式进行选择有些不同。
答案 4 :(得分:0)
使用此方法获取服务器控件的正确客户端ID
$('[id$=dateTo]').datetimepicker();