0
<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)吗?

4

4 回答 4

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;
}
于 2009-06-13T23:37:24.033 回答
1

只需向 span 或文本框添加一个类,然后使用 jQuery 在 dom 中查找元素并向文本框添加更改事件运行 checkLength 代码

$(document).ready(function()
{
    $('.myClass').change(function()
    {
         // do your length check...
    });
});
于 2009-06-14T00:24:08.897 回答
0

您确定问题不只是以下标签中“ClientId”的拼写错误吗?:-)

<span id="<%# tbComments.CliendId %>Label"></span>
于 2009-06-13T23:58:06.480 回答
0

您的 JavaScript checkLength() 函数没有将标签附加到客户端 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>
于 2009-06-14T00:07:13.943 回答