推迟执行Javascript连接到控件事件,转而使用外部jQuery函数

时间:2012-02-14 15:43:49

标签: javascript jquery execution

我有一个由其他开发人员开发的 ASP.NET Web Form 应用程序。

此开发人员广泛使用ASP.NET控件,因此有许多自动生成的 Javascript 函数连接到HTML元素的事件。

现在我被要求添加功能:在第一次中风时禁用提交按钮,以避免用户多次点击按钮。

以下是我使用http://jsfiddle.net/2hgnZ/80/ jQuery 代码,而 HTML DOM 与我使用的代码相同:

$('#form1').submit(function(e) {
    $(this).find('input[type=submit]').attr('disabled', 'disabled');
    // this is to prevent the actual submit
    e.preventDefault();
    return false;
});

我的代码中的这个脚本不起作用,经过多次尝试后我确信它取决于连接到按钮的onSubmit事件的 JavaScript 事件。

如何推迟执行这个Javascript而支持jQuery unobtrusive函数?

4 个答案:

答案 0 :(得分:1)

HMM。你能确认你的事件正在解雇吗?我对提交的文档感到厌倦,而且它是有约束力而不是生活,这很好。

如何连接按钮呢?这不是完美的,因为输入键不使用按钮,但如果它以这种方式工作,你将学习一些东西

答案 1 :(得分:1)

您是否尝试过调用e.stopImmediatePropagation(); http://api.jquery.com/event.stopImmediatePropagation/

答案 2 :(得分:0)

这段代码延迟了你想要的功能量的执行。

// delay code for one second
$(document).ready(function() 
{
    window.setTimeout(function() 
    {
        // delayed code goes here
    }, 1000);
}); 

答案 3 :(得分:0)

这段代码应该可以帮助您获取原始事件,然后在您想要的代码之后触发它。

$(function(){
    var $button = $('#actionButton'),
    clickEvent = $button.data("events")['click'][0].handler; //saves the original click event handler

    $button.unbind('click'); //and removes it from the button

    //create a new click event.
    $button.click(function(e){
        // doWhatever we need to do
        $.ajax({
            url: url,
            data: data,
            success: function(){
                $.proxy(clickEvent,$button)(e);//attach the original event to the button
            }
        });
    });
});