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 的文本时,在 focusout 上。
为什么文本更改导致点击事件不被触发?

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 回答