javascript - 拦截按钮回发的最佳方式

标签 javascript asp.net event-handling page-lifecycle

我见过其他解决方案,例如 this一个非常简单但如果 javascript 函数不只是 confirm('sure?'); 呢?我永远不知道它什么时候会返回 bool 值。

所以我决定像这样实现所有我的 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了,想知道有没有更好的方法。

编辑: here是另一种“正确”的方法,但我希望能够使用更高级的模态对话框并在单击"is"时返回 true,而不是使用浏览器的 native 确认对话框。

edit2:我想我想问的是,有没有办法为执行不止一件事的 OnClientClick 函数返回 bool 值

最佳答案

如果您在客户端脚本中手动触发点击事件,您的应用程序将无法使用移动浏览器的 Go 按钮正常运行。

下面是如何拦截按钮的服务器端点击事件,而无需在客户端手动触发它。

<script type="text/javascript">
    function clientClick() {
        if (confirm("Are you sure you want to delete?")) {
            // Do something at client side before posting back to server
            return true;
        }
        return false;
    }
</script>

<asp:Button runat="server" ID="DeleteButton" Text="Delete" 
    OnClick="DeleteButton_Click" OnClientClick="return clientClick();" />

您可以使用 ASP.Net MVC 做很多花哨的事情。然而,它们在传统的 ASP.Net 中产生了很多问题。

关于javascript - 拦截按钮回发的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17578379/

相关文章:

html - 由于 CSS 动画,未处理复选框上的单击事件

javascript - 寻求 Javascript 中的模拟框架

c# - C# 中的 ASP.Net 标签更改

event-handling - 具有不同 Controller 的 XML View 的共享事件处理程序

c# - 创建具有富文本和动态行控件的 ASP 应用程序

c# - 抛出新的 ArgumentException

c++ - Qt:如何使用连接处理自定义事件?

javascript - 在 JS 函数 'good' 实践中使用多个替换?

Javascript - 从元素中删除句子(不包含 id/class),但保留其余内容

javascript - 使用 jQuery 或 Javascript 拆分 URL