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

时间:2011-08-09 16:16:07

标签: 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");
    }

3 个答案:

答案 0 :(得分:2)

问题是你的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或尝试访问触发它的点击事件,它仍然可以正常工作。

答案 1 :(得分:0)

您可以尝试使用jQuery的.submit()方法触发正常表单提交(或者可能是侦听提交事件而不是点击事件)。

请阅读此处的示例:http://api.jquery.com/submit/

答案 2 :(得分:0)

让JQuery方法最后返回true,它将执行回发。