我看到了其他的解决方案,比如这个很直接,但如果 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,而不是使用浏览器的原生确认对话框。
编辑2:我想问的是,是否有一种方法可以为执行多个操作的OnClientClick函数返回bool值。