2016-11-04 6 views
1

Я использую Plone 4.3 и у меня есть browserview, где у меня есть ссылки, открывающие наложение определенной формы В моем HTML, у меня естьПри использовании prepOverlay, как можно предотвратить открытие нескольких накладок?

<table> 
    <thead> 
     <tr> 
      <th class='.prep_form'>Sun</th> 
      <th class='.prep_form'>Mon</th> 
      ... 
     </tr> 
    </thead> 
    <tbody> 
     ... 
    </tbody> 
</table> 

в моем файле Jquery

jquery(function($){ 
    ... 
    $('.prep_form').prepOverlay({ 
     subtype: 'ajax', 
     filter: '#content-core > form', 
     noform: 'redirect', 
     redirect: function(){ 
      redirect_location = ""; // put together a string 
      return redirect_location; 
     }, 
    }); 
    ... 
}); 

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

Как я могу предотвратить открытие более одного наложения?

+1

Можете ли вы измерить, как долго выполняются запросы xhr? Похоже, мне очень нравится загружать оверлей. – Mathias

+0

Согласно firebug, я, к сожалению, занимаю немного больше половины секунды. Я буду помнить об этом, чтобы у пользователя было меньше шансов дважды щелкнуть. –

ответ

2

В инструменте jquery Docs можно использовать опцию Overlay: oneInstance:true Но это должно быть значение по умолчанию. Вы можете закрыть все открытые наложения через this.getOverlay().close()

$('.prep_form').prepOverlay({ 
    subtype: 'ajax', 
    filter: '#content-core > form', 
    noform: 'redirect', 
    redirect: function(){ 
     redirect_location = ""; // put together a string 
     return redirect_location; 
    }, 
    config: { 
     oneInstance:true, 
     onBeforeLoad : function (e) { 
      console.log('onBeforeLoad', this.getOverlay());     
      this.getOverlay().close(); 
      return true; 
     } 
    }   
}); 
+0

Прошу прощения за мой поздний ответ. Благодарю за ваш ответ. Это решило мою проблему. –

+0

Нет проблем, спасибо за ответ. – 1letter