如何将转发器项的id转换为jquery

时间:2014-11-26 11:49:23

标签: javascript jquery asp.net

如何使用jQuery在嵌套转发器中获取文本框的id

这是我目前的代码:

<script type="text/javascript">
    var e = jQuery.noConflict();
    e(document).ready(function () {
        e("#<%= datepicker.ClientID %>, #datepicker").datepicker({
            changeMonth: true,
            changeYear: true
        });
    });
</script>

<asp:Repeater runat="server" ID="rpfollowup">
    <ItemTemplate>
        <asp:Repeater runat="server" ID="rpactivity" OnItemDataBound="rpactivity_ItemDataBound" >
            <ItemTemplate>
                <tr>
                    <td><asp:TextBox ID="Activities" runat="server" CssClass="span10"   Text='<%#Eval("Activity")%>'></asp:TextBox></td>
                    <td><asp:TextBox ID="datepicker" runat="server" CssClass="span10" ClientIDMode="Static" Text='<%#Eval("Start_Date")%>'></asp:TextBox></td>
            </ItemTemplate>
        </asp:Repeater>
    </ItemTemplate>
</asp:Repeater>

我减少了代码以避免混淆。

&lt;%= datepicker.ClientID%&gt;给出红色下划线,因为它无法检测到中继器中的ID。 请给出解决方案。提前致谢

1 个答案:

答案 0 :(得分:0)

如果这是ASP.NET repeater控件,则所有控件都将重复自身以及文本框,因此您将Ids附加1,2,依此类推。因此,请在文本框中使用class,并应用如下函数: -

e(".datepicker").datepicker({
       changeMonth: true,
       changeYear: true
});

更新: -
将此用于转发器,因为每个项目都会有多个文本框。

$('.datepicker').each(function () {
      $(this).datepicker({
       changeMonth: true,
       changeYear: true});
});

我在你的标记中添加了这样的类: -

<td><asp:TextBox ID="datepicker" runat="server" CssClass="span10 datepicker" 
  ClientIDMode ClientIDMode="Static" Text='<%#Eval("Start_Date")%>'></asp:TextBox></td>

此外,请注意,因为这是Repeater,所以控件将重复,因此您需要使用$(this)

引用当前上下文中的当前元素