jquery - ASP.NET 按钮单击,在服务器控件上使用 jQuery

标签 jquery asp.net

当您通过 jQuery 将客户端单击事件附加到 ASP.NET 按钮时,您是否会失去进行回发的能力?我只需要在服务器端的事情发生之前做一些 jQuery,它似乎会中断这个过程。

 $('[id$="btnDisableAlarms"]').click(function () {
            var commentValue = $('[id$="txtComment"]').val();
            if (commentValue == "") {
                // add red border (CSS)
                $('[id$="txtComment"]').addClass("redCommentError");
            }
            return;

        });

该按钮已连接到单击事件,但浏览器不会移动。

 btnDisableAlarms.Click+=new EventHandler(btnDisableAlarms_Click);

 public void btnDisableAlarms_Click(object sender, EventArgs e)
    {
        Response.Write("Still able to manage a postback from server");
    }

最佳答案

问题是您的 jQuery 单击处理程序覆盖了 ASP 分配给按钮的单击处理程序。你可以这样做:

$('[id$="btnDisableAlarms"]').each(function (index, button) {
    var oldClickHandler = button.onclick;
    $(button).click(function () {
        // Do your stuff
        oldClickHandler();
    });
});

这可能不是缓存旧点击处理程序的正确语法,但它与此类似。

编辑:实际上,保留上下文和点击事件会更安全,例如:

$('[id$="btnDisableAlarms"]').each(function (index, button) {
    var oldClickHandler = button.onclick;
    $(button).click(function (clickEvent) {
        // Do your stuff
        oldClickHandler.call(button, clickEvent);
    });
});

这确保了如果旧的点击处理程序使用 this 或尝试访问触发它的点击事件,它仍然可以正常工作。

关于jquery - ASP.NET 按钮单击,在服务器控件上使用 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6999392/

相关文章:

jquery - 在缩略图中将高度设置为视频

jquery - 当数据库中的记录发生更改时,如何不断更新数据表、Websockets 或长轮询实现

c# - OpenXML - 保护所有工作表

asp.net - Crystal Reports 真的会减慢asp.net 网站的构建速度,有什么办法可以排除它们?

asp.net - 从 asp.net mvc 下拉列表中获取值

asp.net - web.config 和 machine.config 之间的区别?

javascript - div 上的 onclick 功能不起作用

javascript - 指定 window.onload 会干扰 jQuery.ready?

javascript - 使用 Jquery 抓取 url

javascript - 从javascript中的下拉列表中获取选定的索引