runat =“server”打破了我的jQuery - datepicker

时间:2013-01-10 16:35:51

标签: javascript asp.net runatserver

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>

有人有任何想法,暗示.....? 谢谢

5 个答案:

答案 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();