レコードの保存を許可する前に、ユーザーにプロンプトを表示したいとしましょう。では、マークアップで次のボタンが定義されているとします。
<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?');");
ユーザーが実際に Yes/No ボタンのいずれかを押すまで、確認呼び出しはブロックされます。これは、私が望む動作です。ユーザーが「はい」を押すと、私のbtnSave_OnClick
メソッドが呼び出されます。
同等のjqueryダイアログについては、次のようなものを試しました(以下を参照)。しかし問題は、javascript confirm() とは異なり、この関数 (displayYesNoAlert) を最後まで通過してから、C# 側の btnSave_OnClick メソッドに進むことです。ユーザーが「はい」または「いいえ」ボタンを押すまで「ブロック」する方法が必要です。その後、true または false を返し、ユーザーの回答に応じて btnSave_OnClick が呼び出されるか呼び出されないようにします。
現在、あきらめてjavascriptのconfirmで行ったところ、何か方法はないかと思っただけです。
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');
}