<asp:DataGrid>
<ItemTemplate>
1)
<asp:TextBox ID="tbComments" onChange="javascript:checkLength(<%# tbComments.ClientId %>);" runat="server"/>
2)
<span id="<%# tbComments.ClientId %>Label"></span>
</ItemTemplate>
</asp:DataGrid>
任何使上述工作的想法(不是:P)?
答案 0 :(得分:3)
更改标记以将“this”作为对给定注释框的引用传递。
<asp:TextBox ID="tbComments"
onChange="javascript:checkLength(this);" runat="server"/>
然后在checkLength()函数中,“e”是对引发onchange事件的DOM元素的直接引用。
function checkLength(e){
alert(e.id); //id of the comments box
//get a reference to the span element immediately after the textbox
theSpan = e.parentNode.getElementsByTagName("span")[0];
theSpan.innerHTML = "comments length: " + e.value.length;
}
答案 1 :(得分:1)
只需在span或文本框中添加一个类,然后使用jQuery在dom中查找元素,并在文本框中添加更改事件,运行checkLength代码
$(document).ready(function()
{
$('.myClass').change(function()
{
// do your length check...
});
});
答案 2 :(得分:0)
您确定问题不仅仅是在以下标记中拼写错误的“ClientId”吗? : - )
<span id="<%# tbComments.CliendId %>Label"></span>
答案 3 :(得分:0)
您的JavaScript checkLength()函数是否存在错误,未将Label附加到客户端ID?然后让你的Javascript同时使用?:
<asp:DataGrid>
<ItemTemplate>
1)
<asp:TextBox ID="tbComments"
onChange="javascript:checkLength(<%# tbComments.ClientId %>, <%# tbComments.ClientId %>Label);"
runat="server"/>
2)
<span id="<%# tbComments.ClientId %>Label"></span>
</ItemTemplate>
</asp:DataGrid>