如何有条件地关闭jQuery Overlay?

时间:2011-03-10 16:46:23

标签: jquery callback overlay conditional

我正在为jQuery Overlay提供自定义关闭按钮 单击此按钮时,我想验证叠加层内的表单,并且当且仅当表单有效时才关闭叠加层

示例(不起作用......无论如何总是关闭)

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

我怎样才能实现这个目标?

2 个答案:

答案 0 :(得分: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事件   在采取某些行动之前发生   当时发生的on事件   (或之后)采取行动。您   可以拥有绑定的自定义功能   这些事件。所有工具都提供这样的   事件和他们共享一个共同的命名   政策。 onBefore事件提供   你有可能取消   行动。

答案 1 :(得分:1)

您可以在此处找到所有您需要了解的信息

http://www.erichynds.com/jquery/using-deferreds-in-jquery/#