在回发之前发生火jQuery事件 - asp.net

时间:2013-09-05 08:38:13

标签: jquery asp.net webforms

我一直在寻找一种向按钮添加jQuery事件的方法,一旦点击该按钮将触发事件,然后是asp回发。

添加事件很容易,但问题是暂时延迟了asp回发。

Asp Code(在C#中添加的事件):

<input runat="server" ClientIDMode="static "id="cancelButton">

JQuery代码:

var cancelBtn = jQuery('#cancelButton');

cancelBtn.click(function (e) {
    e.preventDefault();

    var cancelBtnEvent = cancelBtn[0].click;

    jQuery(pnl).animate({
        height: 200
    }, 300, 'swing', function () {
        cancelBtnEvent();
    });
}); 

在上面的代码中,我向按钮添加了一个click事件,'cancelBtn'是一个输入[type =“button”]。该事件将停止默认值,保存点击功能以便稍后调用,执行一些动画然后调用单击功能。但是,这会因错误无效对象调用而失败。

所以我的问题:

应该怎么做?或者我的解决方案可以修复吗?

谢谢

3 个答案:

答案 0 :(得分:1)

编辑1

这是一个适合你的简单技巧。对不起,我之前没有仔细注意过这个问题。

var IsFirstLoad = true;// Declare globally (outside ready function)
        cancelBtn.click(function (e) {
            if (IsFirstLoad) {
                e.preventDefault();
            }
            jQuery(pnl).animate({
                height: 200
            }, 300, 'swing', function () {
                jQuery('#cancelButton').click();
                IsFirstLoad=false;
            });
        });

首先发布的答案。(在此场景中不起作用)。抱歉!

jQuery(pnl).animate({
        height: 200
    }, 300, 'swing', function () {
        jQuery(cancelBtn).click();
    });

尝试使用jQuery(cancelBtn).click();代替cancelBtnEvent();。如果cancelBtn是一个jQuery元素,那么cancelBtn.click()就足够了。

答案 1 :(得分:0)

首先,您确定选择器cancelBtn是否正确? ASP.net修改了asp元素ID,因此您无法再通过$("MyElementId")解决它们。相反,你将不得不使用例如$("[ID$=MyElementId]")。那么什么样的对象是cancelBtn

为什么要将click事件保存在变量中?相反,你可以直接调用它:

jQuery(pnl).animate({
    height: 200
}, 300, 'swing', function () {
    jQuery(cancelBtn).click();
});

请注意,您不需要使用cancelBtn[0]来获取DOM元素。

答案 2 :(得分:0)

这也是可能的:

jQuery(cancelBtn).trigger("click");