1

runat="server" 正在破坏我的 jquery。我有两个输入,但出于测试目的,只在其中一个中添加了 runat="server" 。实际上,我需要添加两者。

您可以在下面找到触发 datetimepicker 的 JS 脚本:注意:dateTo 已设置 runat="server" 并尝试更改 JS 尝试获取其 ID 的方式,但仍然无法正常工作。

<script>
        $(function(){
            $("#dateFrom").datetimepicker();
            $("#<%=dateTo%>").datetimepicker();
        });
</script>

在这里,您可以使用 runat="server" 或不使用 asp.net 代码找到 HTML 输入。

    <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>

有没有人有任何想法,提示......?谢谢你

4

5 回答 5

7

用于ClientID获取Id服务器端控件的生成:

$("#<%=dateTo.ClientID%>").datetimepicker();

ASP.NET 将生成一个不同于服务器端控件属性的特定id属性,因此您需要使用生成的值才能从 jQuery 访问它。id

于 2013-01-10T16:37:15.447 回答
3

由于您提供了类名,我建议简单地使用这些。

$(function(){
    $(".dateTo, .dateFrom").datetimepicker();
});

或者,您可以为表单上的任何“日期”字段提供一个“日期”类并使用它:

$(function(){
    $(".date").datetimepicker();
});

这是客户端验证的常见模式,还允许您通过 CSS 样式提供上下文线索。

于 2013-01-10T16:55:03.183 回答
1

如果您使用的是 .NET 4,则可以将ClientIDMode属性设置为Static. 这将防止框架更改元素的 ID:

<input type="text" id="dateTo" name="dateTo" runat="server" 
       ClientIDMode="Static" class="dateTo" value=""  /> 
于 2013-01-10T16:59:49.270 回答
0

添加时,ASP.NET 会将输入视为服务器端控件runat=server,这将导致这些输入的标识符经过转换,以便它们以容器前缀(类似ctl00_)开头,从而“破坏”您的 jQuery 选择器。

如果您使用的是 .NET 4,则可以通过更改ClientIDMode来禁用这些转换。否则,您将需要在选择器中包含前缀,或者将选择器重构为独立于 ID 并且通过其他方式进行选择时有所不同。

于 2013-01-10T16:37:04.953 回答
0

使用它来获取服务器控件的正确客户端 ID

$('[id$=dateTo]').datetimepicker();
于 2013-01-10T16:39:20.873 回答