【问题标题】:ASP.NET button-click, using jQuery on a server controlASP.NET 按钮单击,在服务器控件上使用 jQuery
【发布时间】:2011-08-09 16:16:07
【问题描述】:

当您通过 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.net


    【解决方案1】:

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

    【讨论】:

    • 小错字:onClick -> onclick。修改太小,无法在帖子中修复(修改必须超过 6 个字符)。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      只要让你的 JQuery 方法最后返回 true,它就会执行回发。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多