Javascript 确认关闭色盒

Javascript 确认关闭色盒,javascript,colorbox,Javascript,Colorbox,如果用户试图关闭colorbox,我想显示简单的确认弹出框。我尝试了以下代码: onCleanup:function(){ confirm('Are you sure'); } 它会显示确认框,但即使单击“取消”,颜色框也会关闭 有人能帮忙吗?我不知道colorbox是否允许在您启动后取消关闭 但是,如果是这样,您需要将代码更改为 onCleanup:function(){ return confirm('Are you sure'); } 我用FancyBox做过类似的事情。我认为最好是在

如果用户试图关闭colorbox,我想显示简单的确认弹出框。我尝试了以下代码:

onCleanup:function(){ confirm('Are you sure'); }
它会显示确认框,但即使单击“取消”,颜色框也会关闭


有人能帮忙吗?

我不知道colorbox是否允许在您启动后取消关闭

但是,如果是这样,您需要将代码更改为

onCleanup:function(){ return confirm('Are you sure'); }

我用FancyBox做过类似的事情。我认为最好是在显示ColorBox时将事件处理程序绑定到close按钮:

onComplete:function(){
  $("#cboxClose").click(function(e) {
    // stop any other script from firing
    e.stopPropagation(); 
    if (confirm('Are you sure')) {
      $.colorbox.close();
      // ensure that the binding is removed when closed
      $("#cboxClose").unbind();
    }
  });
}

@肯,你的例子对我非常有效……几乎。我必须做的唯一修改是在设置click函数之前解除绑定,因为出于某种原因,它会忽略if语句,并且在第一次加载时仍然关闭。下面是我用来确认关闭一个色盒的东西

$(".Add").colorbox({
    onComplete:function(e){
       $("#modalForm").ajaxForm(modalOptions);
       $("#cboxClose").unbind(); 
       $("#cboxClose").click(function(e){
          e.stopPropagation();
          if(confirm('Are you sure you want to cancel your changes?')){
             $.colorbox.close();
             $("#cboxClose").unbind();                               
          }                           
       }); 
    }
   });
已经有一个

您必须重新定义colorbox的关闭方法:

var originalClose = $.colorbox.close;
$.colorbox.close = function(){
  if (confirm('Do you want to close this window?')) {
    originalClose();
  }
};

始终可以修改ColorBox以在onBeforeClose上添加回调,该回调将考虑回调的返回值/callbacks@Jonathan的确从源头上看,如何做到这一点非常简单。这非常有效!是否有一种方法仅在colorbox中打开的页面上发生更改时才显示消息?@Dennis,我将使用jQuery在该表单的所有输入上附加onChange处理程序。如果调用了该函数,则将变量(例如
var hasChanged=false;//对于默认的init值
)设置为true-
$(“#colorboxFormId:input”)。在(“change”,function(){hasChanged=true;})
。然后您的
if(confirm…
将变成
if(hasChanged&&confirm(…)
。为这段代码中的拼写错误道歉-这是我想采用的方法。@Dennis-还请注意,如果您的colorbox内容是通过AJAX加载的,那么您需要在加载内容后附加此处理程序,或者在加载页面时引用屏幕上存在的父元素。否则,hAndrer将永远不会附加到表单,因为当页面第一次加载时表单不存在。感谢您提供的信息。我们使用的是iframe,这是一个活动扳手。