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