我有以下Jquery函数
<script type='text/javascript'>
$(function () {
var msgbox = $("#status");
$( '<%= txtCurrBlk.ClientID %>').on('keyup', function () {
alert("The paragraph was clicked.");
$.ajax({
type: "POST",
url: "MonthlyCopyReadings.aspx/readingTextChanged",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
msgbox.html(msg.d);
}
});
});
});
txtCurrBlk来自以下代码块
<asp:Repeater runat="server" ID="rptMeterReads" >
<ItemTemplate>
<tr>
<td><%#Eval("serialNum") %></td>
<td style="display:none"><asp:Label ID="lblMfdId" runat="server" Text='<%#Eval("mfdId") %>'/></td>
<td><%#Eval("contractNum") %></td>
<td><%#Eval("model") %></td>
<td><asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl='<%#Eval("ipAddress") %>'><%#Eval("ipAddress") %></asp:HyperLink></td>
<td><%#Eval("password") %></td>
<td><asp:Label ID="lblPrevBlk" runat="server" Text='<%#Eval("previousBlack") %>' /></td>
<td><asp:TextBox ID="txtCurrBlk" runat="server" style="width:80px" Text='<%#Eval("currentBlack") %>' AutoPostBack="true" /></td>
<td><asp:Label ID="lblTotalBlk" runat="server" /> </td>
<td><asp:Label ID="lblPrevClr" runat="server" Text='<%#Eval("previousColour") %>' /></td>
<td><asp:TextBox ID="txtCurrClr" runat="server" style="width:80px" Text='<%#Eval("currentColour") %>' Autopostback="true" /></td>
<td><asp:Label ID="lblTotalClr" runat="server" /> </td>
<%--<td><asp:CheckBox ID="isColor" Checked='<%#Eval("") %>' runat="server" ReadOnly="True"/></td>--%>
</tr>
</ItemTemplate>
</asp:Repeater>
我发现我得到&#34; txtCurrBlack在其当前上下文中不存在&#34;如果我在itemTemplate中有它。有没有办法可以正确引用该文本框?
答案 0 :(得分:0)
在您的问题中使用ClientID
之类的<%= txtCurrBlk.ClientID %>
不起作用,因为每个服务器控制分配有不同ID的模板内部(请注意重复或动态创建的HTML元素不能具有重复ID)并且您需要使用FindControl
来获取后面代码中的控件,如下所示:
<%= Container.FindControl("txtCurrBlk").ClientID %>
将文本框元素置于转发器控件内的最简单方法是设置CssClass
属性,如下所示:
<asp:TextBox ID="txtCurrBlk" runat="server" style="width:80px" CssClass="currBlk" Text='<%#Eval("currentBlack") %>' AutoPostBack="true" />
由于转发器内的文本框具有许多元素ID,因此我们无法使用id
属性来绑定它们上的事件。使用上面提到的CSS类名作为jQuery选择器:
// n = element index
$('.currBlk').on('keyup', function () {
alert("The paragraph was clicked.");
// other stuff
}
提示:如果要将事件与指定了索引的HTML元素绑定,可以使用jQuery eq()
方法。
类似问题: