Javascript 用按钮关闭色盒弹出窗口并触发确认框?

Javascript 用按钮关闭色盒弹出窗口并触发确认框?,javascript,jquery,popup,colorbox,Javascript,Jquery,Popup,Colorbox,我的彩盒上有一个确认框(“你确定要离开吗?”)。 这会在我关闭弹出窗口时触发。当我点击弹出窗口上的“cboxClose”div时,这一点就起作用了 我试图在点击按钮时显示此确认框。但是弹出窗口只是立即关闭,没有显示确认框 我的问题是,当我单击取消按钮时,如何触发确认框。我试过几种方法 //这只会关闭弹出窗口,而不显示确认框 $('#btnCancel').click(function () { parent.$.colorbox.close(); }); //

我的彩盒上有一个确认框(“你确定要离开吗?”)。 这会在我关闭弹出窗口时触发。当我点击弹出窗口上的“cboxClose”div时,这一点就起作用了

我试图在点击按钮时显示此确认框。但是弹出窗口只是立即关闭,没有显示确认框

我的问题是,当我单击取消按钮时,如何触发确认框。我试过几种方法

//这只会关闭弹出窗口,而不显示确认框

$('#btnCancel').click(function () {
                 parent.$.colorbox.close(); });
//不起作用

$('#btnCancel').click(function () {
                     $('#cboxClose').click()
                  });
色盒

onComplete: function () {
 $("#cboxClose").click(function (e) {

                    // stop any other script from firing
                    e.stopPropagation();
                    if (confirm('are you sure you want to leave?')) {
                        $.colorbox.close();
                        // ensure that the binding is removed when closed
                        $("#cboxClose").unbind();
                    }

                });

            } // close oncomplete

这里的问题是colorbox在
cboxClose
元素上注册了一个click处理程序。因此,停止冒泡或阻止单击(通过单击处理程序中的
返回false
)都不会产生任何效果,因为colorbox处理程序已注册。阻止该处理程序运行的唯一方法是解除绑定。但是,要做到这一点,您需要对处理程序的引用,如果不修改colorbox代码,您将无法获得该引用

在任何情况下,这就是正在发生的事情,以及上面的代码无法工作的原因。您的另一个选项是重写colorbox close函数(这是由colorbox的close按钮处理程序调用的公共colorbox方法)。您所需要的就是:

$.colorbox._close = $.colorbox.close;
$.colorbox.close = function() {
    if(confirm("Close?")) {
        $.colorbox._close();
    }
}

缺点(在您的情况下可能不是问题)是,这将影响页面上的所有颜色框。

我通过使用此方法并将其绑定到“取消”按钮解决了此问题

var originalClose = $.colorbox.close;
            $.colorbox.close = function (e) {
                var response;
                var formChanged = localStorage.getItem("isFormChanged");
                var saveClicked = localStorage.getItem("saveClicked");
                if (formChanged == "true" && saveClicked == "false") {
                    response = confirm('Do you want to close this window? All your changes will not be saved');
                    if (!response) {
                        return
                    }
                }
                originalClose();
            };

<input type="button" value="Cancel" id="btncancel" onclick="parent.$.colorbox.close()"/> 
var originalClose=$.colorbox.close;
$.colorbox.close=函数(e){
var反应;
var formChanged=localStorage.getItem(“isFormChanged”);
var saveClicked=localStorage.getItem(“saveClicked”);
if(formChanged==“true”&&saveClicked==“false”){
response=confirm('是否要关闭此窗口?将不会保存所有更改');
如果(!响应){
返回
}
}
原始丢失();
};