我见过像这样的其他解决方案,它非常简单,但是如果 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 分钟才能被调用。
感觉太hacky了,我想知道是否有更好的方法。
编辑: 这是另一种“正确”的方法,但我希望能够使用更高级的模式对话框并在“是”单击时返回 true,而不是使用浏览器的本机确认对话框。
edit2:我想我要问的是,有没有一种方法可以为 OnClientClick 函数返回一个布尔值,该函数不止一件事