このような非常に簡単な他のソリューションを見てきましたが、javascript関数が単にconfirm('sure?');
. いつブール値が返されるかわかりません。
そこで、すべての ASP.NET ボタンを次のように実装することにしました。
<button id="btnDelete" name="btnDelete" class="btn">Delete</button>
<asp:Button ID="_btnDelete" runat="server" OnClick="_btnDelete_Click" style="display:none;" />
$('#btnDelete').click(function (e) {
$.blockUI({ message: $('#divConfirmDeleteModal'), overlayCSS: { cursor: 'default' }, css: { cursor: 'default' }, baseZ: 5555 });
return false;
});
$('#btnDeleteYes').click(function () {
$('#<%=_btnDelete.ClientID%>').trigger('click');
});
$('#<%=_btnDelete.ClientID%>').click(function (e) {
// the delay happens here. if i put an alert here, it fires,
// but then the page just loads until eventually the method gets called
<%= ClientScript.GetPostBackEventReference(_btnDelete, string.Empty) %>;
});
..そして、今までしばらくはうまくいきました。IE (バージョン 10 でも) で問題が_btnDelete_Click
発生しています。最終的にトリガーするボタンをクリックしてから呼び出されるまでに最大 2 分かかります。
ハックしすぎて、もっと良いアプローチがあるかどうか疑問に思っていました。
編集: これは別の「正しい」方法ですが、ブラウザーのネイティブの確認ダイアログを使用するのではなく、より洗練されたモーダル ダイアログを使用して、「はい」をクリックすると true を返すようにしたいと考えています。
edit2:私が求めているのは、複数のことを行う OnClientClick 関数のブール値を返す方法があると思います