0

これは私のコードです:

<script type="text/javascript">
    $(document).ready(function () {
        $("#txt1").focusout(function () { $("#lbl1").text("aaaa"); });
        $('#btn1').click(function (){ alert("clicked"); });
    });
</script>

<asp:Label ID="lbl1" runat="server" ClientIDMode="Static" />
<asp:TextBox ID="txt1" runat="server" ClientIDMode="Static"/>
<asp:Button ID="btn1" runat="server" ClientIDMode="Static"/>

コードを実行し、次の手順を実行します。
1. txt1 内をマウスで押します
。 2. btn1 をマウスで押し
ます。アラート メッセージは表示されません。ボタンをもう一度クリックした場合にのみ表示されます。
これは、フォーカスアウト時に lbl1 のテキストを変更した場合にのみ発生します。
テキストの変更によってクリック イベントが発生しないのはなぜですか?

4

1 に答える 1

0

実際、スクリプトはクリックイベントをボタンにバインドしていません。という属性を持っているからですrunat=server。そのため、レンダリング時に要素の id が変更されます。クラス名を使用するかclientID、id の代わりに使用する必要があります。

クラス名を使用して、

 <script type="text/javascript">
 $(document).ready(function () {
    $(".txt1").focusout(function (e) {
        e.stopPropagation();
        $(".lbl1").text("aaaa");
    });
    $('.btn1').click(function (e) {
        e.stopPropagation();
        alert("clicked");
    });
});
</script>

<asp:Label ID="lbl1" CssClass="lbl1"  runat="server" />
<asp:TextBox ID="txt1" CssClass="txt1" runat="server" />
<asp:Button ID="btn1" CssClass="btn1" runat="server" />

編集

問題はラベルの位置です。このフィドルをチェックしてください

于 2014-04-30T06:47:03.123 に答える