制作开放的fancybox模态

时间:2012-10-31 15:57:06

标签: javascript jquery fancybox

我有一个带有两个按钮的Fancybox:合并和取消。取消关闭fancybox,Merge发布表单并等待页面重新加载。页面重新加载需要几秒钟,因此在用户按下合并后我禁用了取消按钮,我想将选项modal设置为true,但我似乎无法看到找到一种方法在已打开的fancybox上设置选项。有没有人对如何做到这一点有任何建议?

游乐场:http://jsfiddle.net/vCtVq/

2 个答案:

答案 0 :(得分:3)

没有简单的选项来切换“模态”状态,fancyBox是模态还是非模态。但我可以想到两个解决方案。

1)在叠加层上隐藏关闭按钮并取消绑定点击事件 -

$('#merge').click(function() {
    $('#cancel').attr("disabled", "disabled");

    $('.fancybox-item').hide();
    $('.fancybox-overlay').unbind();

    console.log('submit');
});

演示 - http://jsfiddle.net/am8d3/

2)创建一个全局变量,并使用“beforeClose”回调进行检查。您可以通过返回“false” -

取消关闭
var busy = false;

$(".o").fancybox({
    //modal: true
    beforeClose: function() {
        if (busy) {
            return false;
        }
    }
});

演示 - http://jsfiddle.net/MLjAT/

答案 1 :(得分:0)

Fancybox在函数运行时启动一次,不能用不同的选项重新启动我很确定。你可以做的是创建一个标志,并使用一些更传统的JavaScript来控制关闭行为。从get go开始将modal设置为true,而是通过body click事件处理close。然后,设置一个true / false标志,确定是否单击了合并,是否允许窗口在单击时关闭。像这样:

$('body').click(function(e) {    
    if (allowClose == true) {
        $.fancybox.close();
    }
})​

我已经更新了你的解决方案here