Это мой код:
<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 текст на фокус.
Почему изменение текста приводит к тому, что событие клика не запускается?
На самом деле ваш скрипт не привязывает событие click к кнопке. Потому что он имеет атрибут runat=server
. Таким образом, он изменит идентификатор элементов во время рендеринга. вы должны либо использовать имя класса, либо 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" />
редактировать
Проблема заключается в положении метки. Пожалуйста, проверьте этот скрипт
$('#btn1').click(function (){ $("#txt1").blur(); alert("clicked"); });
$('#btn1').click(function (){ alert("clicked"); }).click();
но я не думаю, что это хорошая идея ....