DoPostback обновляет страницу, но не перехватывает обработчик событий
-
21-12-2019 - |
Вопрос
Прежде всего должен отметить, что я провожу целый день в поисках и не могу понять, что не так с моим кодом и почему он не работает...
Мне нужен модальный диалог для подтверждения в моем коде, поэтому я использую этот модальный диалог jQuery: JQuery Подтвердить
Мне нужно встроить эту функциональность в <asp:Button>
...
Моя проблема в том, что когда я нажимаю на кнопку, появляется всплывающее диалоговое окно, но кнопки «да/нет» не работают, и обе диалоговое окно просто исчезают.
Также я использую код ниже, но __doPostBack()
вообще ничего не делал, но отлично запускал простые js-коды, такие как alert(''):
$("#complexConfirm").confirm({
title: "Redirect confirmation",
text: "This is very dangerous, you shouldn't do it! Are you really really sure?",
confirm: function (button) {
__doPostBack('complexConfirm', 'OnClick');
},
cancel: function (button) {
return false;
},
confirmButton: "Yes",
cancelButton: "No"
});
Я ищу и элемент диалогового окна выходит за пределы элемента формы, поэтому мне следует вернуть его в форму, но я не знаю, как мне попробовать код ниже, и это не так.
$("#editEventModal").parent().appendTo(jQuery("form:first"));
Другая проблема заключается в том, что я пытаюсь выполнить обратную передачу с событием javascript без диалогового окна, я использую две кнопки: одну для вызова javascript, а другую для этого, но когда я использую __doPostBack, он обновляет страницу, но не доходит до события моей кнопки в коде. -Сзади я пробую несколько способов вызова события кнопки onClick, но оно просто обновляет страницу и не вызывает мою кнопку OnClick Mehtod !!!
Объявление кнопок выглядит следующим образом:
<asp:Button ID="complexConfirm" ClientIDMode="Static" runat="server" OnClick="TestBTN_Click" Text="Test" />
<asp:Button ID="checkit" ClientIDMode="Static" runat="server" OnClientClick="__doPostBack('<%=complexConfirm.UniqueID%>', '');" Text="CHECK" />
Что мне делать с этими двумя проблемами?
Я много ищу, и ни одно из решений мне не помогло!!!
Буду признателен за любое решение, спасибо.
Решение
Не зная объявления вашей кнопки asp:, вот мое лучшее предположение.
Вам нужно использовать уникальный идентификатор кнопки, атрибут «имя» кнопки, а не ее идентификатор.
__doPostBack('<%=complexConfirm.UniqueID%>', '');
кроме того, поскольку это кнопка, вам не нужно указывать OnClick
РЕДАКТИРОВАТЬ:Я создал рабочий пример, демонстрирующий, чего, по моему мнению, вы пытаетесь достичь.При необходимости вы можете адаптировать это к вашему подтверждению jQuery.
аспкс:
<asp:Button ID="btnTest1" runat="server" Text="Test1" OnClick="btnTest1_Click" />
яваскрипт:
<script>
$('#<%=btnTest1.ClientID%>').confirm({
text: "This is very dangerous, you shouldn't do it! Are you really really sure?",
title: "Confirmation required",
confirm: function (button) {
// do something
__doPostBack('<%= btnTest1.UniqueID%>', '');
},
cancel: function (button) {
// do something
},
confirmButton: "Yes I am",
cancelButton: "No",
post: true
});
</script>
код позади:
protected void btnTest1_Click(object sender, EventArgs e)
{
Response.Write("You clicked YES");
}
Я думаю, что отчасти проблема заключалась в том, что имя вашего события не было названо именем вашей кнопки.Если вы используете autoEventWireup, как я думаю, вы и делаете, ваше событие не сработает, потому что оно не может найти событие с совпадающим именем.
Итак, первое, что я сделал, — это удалил StaticClientID.вы все равно можете использовать jquery с идентификаторами, сгенерированными asp.net.Затем я убедился, что событие было названо btnTest1_Click
потому что имя кнопки btnTest1
Я не уверен, зачем вам нужна другая кнопка, потому что, похоже, все, что вы пытаетесь сделать, это подтвердить до отправки кнопки.