2011-03-10 60 views
-1

我正在爲jQuery Overlay提供一個自定義關閉按鈕。
單擊此按鈕時,我想驗證覆蓋內的一個表單,並且當且僅當表單有效時關閉覆蓋如何有條件關閉jQuery覆蓋?

例(不工作...總是密切無論什麼)

$('.trigger[rel]').overlay(
{ 
    close: '.ovclosebutton', 
    onClose: function() 
    { 
     if(validateSomething()) 
      this.getOverlay().close(); 
     else 
      displayErrorInOverlayButDontCloseIt(); 
    } 
}); 

我怎樣才能達致這?

回答

5

看來您正在使用jQuery tools overlay。縱觀事件的方法,你可能需要綁定到onBeforeClose而不是onClose

onBeforeClose當疊加關閉

不知道疊加關閉
onClose之前,如果這將與插件合作但可能是一些僞代碼的開始。

$('.trigger[rel]').overlay(
{ 
    close: '.ovclosebutton', 
    onBeforeClose: function() 
    { 
     if(validateSomething()) 
      return true; //let the overlay close by default. 
     else{ 
      displayErrorInOverlayButDontCloseIt(); 
      return false; //block the close 
     } 
    } 
}); 

縱觀event refrence你應該能夠取消使用onBeforeClose

在事件前後,這些工具 提供這兩者是採取了一些行動之前 發生和 的的onBefore事件結束事件發生在 (或之後)發生的事件。您可以將 的自定義功能綁定到 這些事件。所有工具都提供這樣的 事件,並且它們共享一個通用名稱 策略。 onBefore事件提供 您可能取消 的操作。

+0

確實!緊接在關閉之後觸發'onClose'事件。改用'onBeforeClose'。 – Akarun

+0

謝謝!我的錯誤是我沒有從onBeforeClose函數返回任何東西。當我按照Mark和Akarun的建議修改它時,它完全奏效。 –