2010-07-10 64 views
3

如果用戶試圖關閉彩盒,我想顯示簡單的確認彈出框。我試過這個代碼:確認關閉彩盒

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

它顯示確認框,但即使點擊「取消」,colorbox也會關閉!

任何人都可以請幫忙嗎?

回答

0

我不知道,如果顏色框允許取消關閉,一旦你開始吧..

如果它這樣做,不過,你需要更改您的代碼

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

不工作:( – 2010-07-10 13:59:01

+1

總是可以修改ColorBox來添加一個回調函數onBeforeClose,它考慮了回調/回調函數中的返回值@Jonathan – 2010-07-10 14:22:51

+0

@Jonathan從源代碼看,它非常簡單,如何去做。 – 2010-07-10 16:19:35

5

我已經與FancyBox做了類似的事情。我認爲最好的辦法是將事件處理程序綁定到關閉按鈕在顯示顏色框時:

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(); 
    } 
    }); 
} 
5

@Ken,你的例子非常完美,我......幾乎。我必須做的唯一修改是在設置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();        
      }       
     }); 
    } 
    }); 
+0

這工作太棒了!謝謝 – user1531437 2014-03-27 09:14:11

+0

這很好用!有沒有辦法只顯示消息如果在colorbox中打開的頁面上發生了某些變化? – Dennis 2016-03-22 15:24:32

+0

@Dennis,我會使用jQuery在該表單的所有輸入上附加onChange處理函數。如果調用該函數,請將變量(例如'var hasChanged = false; //用於默認初始值)設置爲true - '$(「#colorboxFormId:input」)。on(「change」,function(){hasChanged = true;})'。然後你的'if(confirm ...)'會變成'if(hasChanged && confirm(....)'。對於這個代碼中的拼寫錯誤 - 道歉我的追求的方法是我的頭腦。 – Tommy 2016-03-22 15:41:33

8

已經有一個nice example in the FAQ of colorbox

你必須重新定義顏色框」關閉方法:

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