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

クラスをスパンまたはテキストボックスに追加し、jQuery を使用して dom 内の要素を検索し、変更イベントをテキストボックスに追加して、checkLength コードを実行します。

$(document).ready(function()
{
    $('.myClass').change(function()
    {
         // do your length check...
    });
});
于 2009-06-14T00:24:08.897 に答える
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 に答える
0

問題は、次のタグの「ClientId」のスペルミスだけではありませんか? :-)

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