Как условно закрыть оверлей jQuery? - PullRequest
0 голосов
/ 10 марта 2011

Я предоставляю пользовательскую кнопку закрытия для наложения jQuery.
Когда эта кнопка нажата, я хочу проверить форму внутри наложения и закрыть наложение тогда и только тогда, когда форма действительна.

Пример (не работает ... всегда закрывать несмотря ни на что)

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

Как мне этого добиться?

Ответы [ 2 ]

5 голосов
/ 10 марта 2011

Похоже, вы используете 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
      }
   }
});

Глядя на ссылку на событие , вы сможете отменить закрытие, используя onBeforeClose

До и после событий Эти инструменты предоставить как событие onBefore, которое происходит до того, как предпринято какое-либо действие и событие, которое происходит во время (или после) действие имеет место. Вы может иметь пользовательские функции, связанные с эти события. Все инструменты предоставляют такие события, и они имеют общее название политика. Событие onBefore обеспечивает вы с возможностью отмены действие.

1 голос
/ 10 марта 2011

все, что вам нужно знать об этом, можно найти здесь

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

...