【问题标题】:Getting result of Confirm dialog on Cancel Button in jQuery event hander在 jQuery 事件处理程序中的取消按钮上获取确认对话框的结果
【发布时间】:2016-01-24 18:42:18
【问题描述】:

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

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

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

但我只想在 onclick 周围的确认确定时“做更多的事情”。我可能错过了一些愚蠢的简单的东西,但我整天都在做这个并且即将放弃!谁能指出我正确的方向?

更新:我无法更改表单的 onclick 代码 - 它必须保持独立,并且现在是......所以确认必须保持在原来的位置。

【问题讨论】:

    标签: javascript jquery onclicklistener confirm


    【解决方案1】:

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

    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
    }
    

    【讨论】:

    • 两个不错的尝试,我感谢他们。我应该在问题中明确表示我无法更改执行表单职责的脚本。逻辑必须在第二个脚本中。
    • 我用覆盖的confirm()-函数更新了我的答案。希望有帮助!
    • 谢谢克里斯。我开始认为我最好的方法是完全重新审视结构。令我惊讶的是,无法判断“onclick”脚本是否已运行或被确认停止。真的在想一定有一些基本的东西我忽略了!
    【解决方案2】:

    这样做:

    $( "#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.
        }
    });
    

    希望这会有所帮助。

    【讨论】:

    • 旧答案,但仍有帮助。谢谢!
    猜你喜欢
    • 2017-10-09
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多