Как закрыть ajaxform в fancybox+iframe

После отправки сообщения нужно закрыть fancybox с ajaxform, как это сделать? форма выведена через iframe:
<a class="btn btn-primary" data-fancybox="" data-iframe="{"preload":false}" data-small-btn="true" data-title="тест кнопки" data-type="iframe" href="[[~17]]">Click me</a>
пытался запускать скрип и со страницы и с фрейма, но безуспешно((
$(document).on('af_complete', function(event, response) {
      var form = response.form;
      if (response.success) {
          $.fancybox.close();
      }
  });
Evgeny
06 декабря 2020, 05:10
modx.pro
288
0

Комментарии: 18

Alexey
06 декабря 2020, 15:20
0
Привет! В консоли браузера есть ошибки? Навскидку — описанный скрипт подключается до подключения jquery
    Evgeny
    06 декабря 2020, 15:22
    0
    а где должен подключаться скрипт? на ifram'e или на странице?
    ошибок нет
      Alexey
      06 декабря 2020, 15:25
      0
      На странице
        Evgeny
        06 декабря 2020, 15:28
        0
        не выходит((
    Alexey
    06 декабря 2020, 15:29
    0
    Дайте ссылку
      Evgeny
      06 декабря 2020, 15:34
      0
      а как связаться? ссылки вроде как нельзя размещать)
      я бы в лс скинул, скайп или еще чтото?
        Alexey
        06 декабря 2020, 15:39
        0
        Пишите в личку
      Александр Мельник
      06 декабря 2020, 16:16
      0
      Вместо
      $.fancybox.close();
      попробуйте просто произвести клик по элементу который отвечает за закрытие.
      $('.какой-то класс элемента крестика').click();
        Evgeny
        06 декабря 2020, 16:23
        0
        мне не подойдет такое) это получается форма отправлена, пришло уведомление о успешной отправке в jgrowl и форма осталась на глазах без изменений(( если бы хотя бы текст появился о том что форма отправлена — то да
          Александр Мельник
          06 декабря 2020, 16:34
          0
          Или я вас не понимаю или вы меня.
          и форма осталась на глазах без изменений
          Почему форма останется без изменений?
          Этот код отслеживает событие которое создает ajax_form
          Если передано значение true в response.success (данные успешно отправлены) то произойдет клик по «крестику» модального окна, оно закроется а пользователь увидит уведомление от jgrowl
            Evgeny
            06 декабря 2020, 16:36
            0
            я недопонял на момент написания ответа, да я попытался это сделать — но не получается форма не закрывается
            <script>
              $(document).ready(function() {
                  AjaxForm.Message.success = function() {};
              });
              $(document).on('af_complete', function(event, response) {
                  var form = response.form;
                  if (response.success) {
                      $('.fancybox-close-small').click();
                      $.fancybox('<h1>' + response.message + '</h1>');
                  }
              });
            </script>
              Александр Мельник
              06 декабря 2020, 16:47
              0
              проверено много десятков раз — это работает.
              Внимательно смотрите ошибки в консоли браузера.
                Evgeny
                06 декабря 2020, 16:54
                0
                в консоли нет ошибок
                  Александр Мельник
                  06 декабря 2020, 17:17
                  0
                  Значит Алексей ниже написал очень правильную мысль. Я вот лично впервые вижу чтобы форму грузили в fancybox через iframe, скорее всего причина в этом.
                Евгений Webinmd
                06 декабря 2020, 21:40
                0
                закиньте этот код в чанк с формой
                Alexey
                06 декабря 2020, 16:45
                0
                Тут проблема в том, что форма через фрейм грузится. И скрипт на странице ее просто не видит. И не ловит событие af_complete
            Evgeny
            07 декабря 2020, 07:21
            +1
            window.parent.$('.fancybox-close-small').click();
            мб кому-то пригодится — рабочая тема
              Alexey
              07 декабря 2020, 09:16
              0
              Интересно! Получается, что работает, так как в пределах одного домена браузеры позволяют
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              18