Допустим, я хочу предложить пользователю, прежде чем разрешить ему сохранить запись. Итак, давайте предположим, что у меня есть следующая кнопка, определенная в разметке:
<asp:Button ID="btnSave" runat="server" OnClick="btnSave_Click"></asp:Button>
Чтобы вызвать приглашение с обычным javascript, я мог бы связать событие OnClick, чтобы моя кнопка сохранения была примерно такой (я мог бы сделать это в Page_Load
):
btnSave.Attributes.Add("onclick",
"return confirm('are you sure you want to save?');");
Вызов подтверждения будет блокироваться до тех пор, пока пользователь фактически не нажмет на кнопки «Да / Нет», что мне и нужно. Если пользователь нажимает «Да», то будет вызван мой метод btnSave_OnClick
.
Для диалога jquery, который является эквивалентом, я пробовал что-то вроде этого (см. Ниже). Но проблема в том, что в отличие от javascript verify (), он будет проходить через эту функцию (displayYesNoAlert), а затем перейдет к моему методу btnSave_OnClick на стороне C #. Мне нужен способ сделать его «заблокированным», пока пользователь не нажмет кнопку «Да» или «Нет», а затем вернет истину или ложь, чтобы в зависимости от ответа пользователя вызывался или не вызывался btnSave_OnClick.
В настоящее время я просто сдался и пошел с подтверждением javascript, я просто подумал, есть ли способ сделать это.
function displayYesNoAlert(msg, closeFunction) {
dialogResult = false;
// create the dialog if it hasn't been instantiated
if (!$("#dialog-modal").dialog('isOpen') !== true) {
// add a div to the DOM that will store our message
$("<div id=\"dialog-modal\" style='text-align: left;' title='Alert!'>").appendTo("body");
$("#dialog-modal").html(msg).dialog({
resizable: true,
modal: true,
position: [300, 200],
buttons: {
'Yes': function () {
dialogResult = true;
$(this).dialog("close");
},
'No': function () {
dialogResult = false;
$(this).dialog("close");
}
},
close: function () {
if (closeFunction !== undefined) {
closeFunction();
}
}
});
}
$("#dialog-modal").html(msg).dialog('open');
}