【问题标题】:Close colorbox popup with a button and trigger the confirm box?使用按钮关闭颜色框弹出窗口并触发确认框?
【发布时间】:2013-02-12 18:13:40
【问题描述】:

我的颜色框上有一个确认框(“你确定要离开吗?”)。 当我关闭弹出窗口时触发。当我点击弹出窗口上的“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

【问题讨论】:

    标签: javascript jquery popup colorbox


    【解决方案1】:

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

    无论如何,这就是正在发生的事情以及为什么您上面的代码不起作用的原因。您的另一个选择是覆盖 colorbox 关闭函数(这是由 colorbox 的关闭按钮处理程序调用的公共 colorbox 方法)。你只需要这个:

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

    不利的一面(在您的情况下可能不是问题)是这会影响页面上的所有颜色框。

    【讨论】:

      【解决方案2】:

      我通过制作这个方法并将其绑定到取消按钮解决了这个问题

      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()"/> 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-01
        • 2014-10-17
        • 1970-01-01
        • 1970-01-01
        • 2013-03-02
        • 1970-01-01
        相关资源
        最近更新 更多