在jQuery事件处理程序

时间:2015-10-25 17:23:41

标签: javascript jquery onclicklistener confirm

一方面,我有一个带有提交/取消按钮的表单,取消有一个 onclick 事件(做一些清理),它包含在一个标准的确认对话框中。所有标准的东西。

但是我有第二个脚本(它必须是第二个脚本),可能只有有时被加载,如果表单被取消,则需要添加更多任务。所以 - 我可以听听onclick ......

$( "#cancelBtn" ).on( "click", function(a) {
    // do more stuff...
});

但如果onclick周围的确认没问题,我只想'做更多的事情'。我可能错过了一些愚蠢的简单但我整天都在这里,我即将放弃!有人能指出我正确的方向吗?

更新:我无法更改表单onclick代码 - 它必须保持独立,因为它现在是....因此确认必须保持原样。

2 个答案:

答案 0 :(得分:1)

这样做:

$( "#cancelBtn" ).on( "click", function(a) {
    if (confirm('Are you sure you want to cancel?')) { // Standard confirmation message.
        // Pressed OK.
        // do more stuff...
    } else {
        // Pressed Cancel.
    }
});

希望这有帮助。

答案 1 :(得分:0)

编辑:由于您无法更改执行表单任务的脚本,因此解决方案是覆盖confirm() - 函数:

var _confirm = window.confirm;
window.confirm = function() {
    //catch result
    var confirmed = _confirm.apply(window,arguments);
    if (confirmed) {
        //confirm ok, do some tasks
    } else {
        //confirm cancelled, do some cleanup
    }
    //pass result on to the caller
    return confirmed;
};

http://jsfiddle.net/sofcuoab/

将任务放在

中的第二个脚本中
function doMoreStuff(){
    //more tasks
}

并在你的确认条款中调用它

if (typeof doMoreStuff === "function") {
    doMoreStuff();
}

或者像这样

try {
    doMoreStuff();
}
catch(err) {
    //no second script loaded
}