Проблемы с drupal dialog

Главные вкладки

Аватар пользователя remmor remmor 28 октября 2018 в 14:33
 (function ($) {

  $(document).ready(function(){
      var ff = $('.yyy').html();
      var pageModal = Drupal.dialog(ff, {
        title: 'Modal on me',
        dialogClass: 'button_mini',
        width: 200,
        height: 400,
        autoResize: true,
        close: function (event) {
          $(event.target).remove();
        }
      });
  $('.button_xxx').click(function(){
                pageModal.showModal();
  });
});
}(jQuery));  

Все бы хорошо, но закрывается только кликом на кнопку, а надо бы чтобы и кликом на место за окном. Какой метод( свойство) за это отвечают?
Или может кто подскажет, где все свойства и методы друпаловского dialog() можно глянуть?

Лучший ответ

Аватар пользователя remmor remmor 29 октября 2018 в 13:33

Да, почти, но в лоб пример не работает, нужно схитрить

    open: function(event){
               var  dd = $(this).dialog(this);
               $('.ui-widget-overlay').on('click', function() {
                     dd.dialog( 'close' );
                });
              },

Вот так работает все отлично, главное переменную вынести за последний "клик".

Комментарии

Аватар пользователя remmor remmor 28 октября 2018 в 16:35

А как в конкретном примере? На dialog( "close" ) ругается, если его внутрь разместить

      var pageModal = Drupal.dialog(ff, {
        title: null,
        dialogClass: 'button_mini',
        width: 100,
        height: 220,
        dialogClass: "no-titlebar",
        autoResize: true,
        open: function(event){
               $('.ui-widget-overlay').bind('click', function() {
                     $('.yyy').dialog( "close" );
                });
              },
        close: function (event) {
          $(event.target).remove();
        }
      });

  cannot call methods on dialog prior to initialization; attempted to call method 'close'  

Аватар пользователя remmor remmor 29 октября 2018 в 13:33

Да, почти, но в лоб пример не работает, нужно схитрить

    open: function(event){
               var  dd = $(this).dialog(this);
               $('.ui-widget-overlay').on('click', function() {
                     dd.dialog( 'close' );
                });
              },

Вот так работает все отлично, главное переменную вынести за последний "клик".