如何有条件地关闭jQuery Overlay?

foo*_*.ar -1 jquery conditional overlay callback

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

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

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

我该如何实现这一目标?

Mar*_*man 5

看来你正在使用jQuery工具覆盖.查看事件方法,您可能需要绑定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
      }
   }
});
Run Code Online (Sandbox Code Playgroud)

查看事件参考,你应该可以取消关闭使用onBeforeClose

事件之前和之后这些工具既提供在执行某些操作之前发生的onBefore事件,也提供在执行操作时(或之后)发生的on事件.您可以拥有绑定到这些事件的自定义功能.所有工具都提供此类事件,并且它们共享一个共同的命名策略.onBefore事件为您提供取消操作的可能性.