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

ASP.NET按钮单击,在服务器控件上使用jQuery,jquery,asp.net,Jquery,Asp.net,当您通过jQuery将客户端单击事件附加到ASP.NET按钮时,是否会失去回发功能?我只需要在服务器端的事情发生之前做一些jQuery,它似乎会中断这个过程 $('[id$="btnDisableAlarms"]').click(function () { var commentValue = $('[id$="txtComment"]').val(); if (commentValue == "") { // a

当您通过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);
    });
});
这可能不是缓存旧的单击处理程序的正确语法,但与此类似

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

$('[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的.submit()方法触发正常表单提交(或者可能侦听提交事件而不是单击事件)


阅读这里的示例:

只要让JQuery方法在末尾返回true,它就会执行回发。

小字体:onClick->onClick。编辑太小,无法在文章中修复(编辑必须超过6个字符)。