如何使用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。 请给出解决方案。提前致谢
答案 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)