2012-10-31 95 views
1

我有一個Fancybox有兩個按鈕:合併和取消。取消關閉fancybox併合併發布表單並等待頁面重新加載。它需要幾秒鐘的時間重新加載頁面,所以在用戶按下合併後,我禁用了取消按鈕,並且我想將選項modal設置爲true,但我似乎無法找到設置選項的方法已經打開fancybox。有沒有人有任何建議如何做到這一點?打開fancybox模式

遊樂場:當函數運行http://jsfiddle.net/vCtVq/

回答

3

沒有簡單的選項來切換「模態」狀態,fancyBox是模態或不模式。但我可以想到兩個解決方案。

1)隱藏在覆蓋關閉按鈕和取消綁定click事件 -

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

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

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

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

2)創建一個全局變量,並使用 「beforeClose」 回調檢查。您可以通過返回「虛假的」取消閉幕 -

var busy = false; 

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

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

+0

謝謝,我喜歡的第一個選項,它模擬有它完美莫代爾:) – olofom

+0

感謝的行爲,在我的情況下,它是$( '#的fancybox疊加')取消綁定(); –

0

的fancybox的initilized一次,並且不能使用不同的選項來reinitilized我敢肯定。你可以做的是創建一個標誌,並使用一些更傳統的JavaScript來控制關閉行爲。將模態設置爲true,然後使用body click事件處理關閉。然後,設置一個真/假標誌,確定是否單擊合併,是否允許窗口關閉主體點擊。類似這樣的:

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

我已經更新了你的這個解決方案的小提琴here