2

如何使用 jquery 获取 Datalist 控件的 clientID,我尝试使用下面的代码但没有成功:

$(document).ready(function(){
$('#<%=txtRenewalDate.ClientID %>').datepicker();
    $('#<%=txtCallBackDate.ClientID %>').datepicker();

});
<asp:DataList ID="dlCustomers" runat="server" ClientIDMode="Predictable">
    <ItemTemplate>
      <table border="0">
                    <tr>
                        <td class="">
                            RenewalDate:
                        </td>
                        <td class="">
                            <asp:TextBox ID="txtRenewalDate" runat="server" Text='<%# Eval("RenewalDate") %>' ClientIDMode="Static"></asp:TextBox>
                        </td>
                    </tr>
                    <tr>
                        <td class="">
                            Callback
                        </td>
                        <td class="">
                            <asp:TextBox ID="txtCallBackDate" runat="server" Text='<%# Eval("Callback") %>' ClientIDMode="Static"></asp:TextBox>
                        </td>
                    </tr></table>
                     </ItemTemplate>
</asp:DataList>

注释脚本时的标记

                        <td class="">

                            RenewalDate:

                        </td>

                        <td class="">

                            <input name="ctl00$MainContent$dlCustomers$ctl00$txtRenewalDate" type="text" value="27/01/2012 00:00:00" id="txtRenewalDate" />

                        </td>

                    </tr>

                    <tr>

                        <td class="">

                            Callback

                        </td>

                        <td class="">

                            <input name="ctl00$MainContent$dlCustomers$ctl00$txtCallBackDate" type="text" value="27/01/2012 00:00:00" id="txtCallBackDate" />

                        </td>

                    </tr>

运行时出现以下错误:当前上下文中不存在名称“txtRenewalDate”当前上下文中不存在名称“txtCallBackDate”

任何我弄错的想法。

谢谢

4

5 回答 5

0

那是完整/实际页面来源吗?还是您实际上在头部有该脚本?如果您在 head 部分有它,我相信您需要将 runat="server" 添加到您的 head 标签中。在主表单标签之外运行内联代码存在一些问题。

于 2012-01-27T17:41:59.607 回答
0

我认为问题可能在于,由于这些控件位于数据列表中,并且您从数据列表外部调用它们,因此它们在技术上并不存在于表单的根目录中。您可能需要执行以下操作:

 $('#<%= dlCustomers.FindControl("txtRenewalDate").ClientID %>')

我可能错了,但这是我最好的猜测。

于 2012-01-27T17:54:28.820 回答
0

如果您使用 asp.net 4,那么您可以将客户端 ID 模式设置为静态,这比在 DOM asp.net 4.0 clientID 模式中查找客户端 ID 更容易

于 2012-01-27T17:59:51.307 回答
0

为了选择这个元素,你应该使用这样的东西:

var txtRen = $('#<%= dlCustomers.ClientID %>').Find('[id$=txtRenewalDate]');
于 2013-07-06T22:59:41.433 回答
0

您可以使用表达式 $('<%= "#" + control.ClientID %>') 在 jquery 中选择控件。

希望这可以帮助。

于 2014-03-28T14:49:15.557 回答