@Dimtri

Как запустить wpcf7mailsent только внутри попапа с определенным id?

На advanced custom fields и CF7 я пытаюсь сделать так, чтобы одна и та же форма после заполнения полей и успешной отправки формы перенаправляла бы на открытие различных пдф файлов.
<?php if ( have_rows( 'm_skachat_fajl' ) ) : ?>
      <?php while ( have_rows( 'm_skachat_fajl' ) ) : the_row(); ?>
      <div id="pamyatka-popap-<?php echo get_row_index(); ?>" class="pamyatka-popap" style="display: none; width: 460px;">
        <?php echo do_shortcode( '[contact-form-7 id="19124" title="Скачать памятку"]' ); ?>
        <?php $m_dobavit_knopku = get_sub_field( 'm_dobavit_knopku' ); ?>
        <?php if ( $m_dobavit_knopku ) : ?>
        <script>
          jQuery(document).ready(function(){
            document.addEventListener( 'wpcf7mailsent', function( event ) {
              var id = event.detail.contactFormId;
              if ( id == 19124 ) {
                window.open("<?php echo esc_url( $m_dobavit_knopku['url'] ); ?>", '_blank');
              }
            }, false );
          });
        </script>
      </div>
      <?php endif; ?>
      <?php endwhile; ?>
      <?php endif; ?>

Проблема в том, что так как скрипт Jquery для перенаправления дублируется, то само собой естественно запускается первый встречный, а не тот, который хотелось бы.
Подскажите, пожалуйста, можно ли как-то исправить ситуацию, не дублируя контактные формы?
Может быть какое-то условие, типа если мы находимся внутри fancybox с id="pamyatka-popap-<?php echo get_row_index(); ?>" - то скрипт внутри этого попапа запускается, а остальные игнорируются?
Или, может, есть какие-то другие решения данного вопроса?
  • Вопрос задан
  • 118 просмотров
Решения вопроса 1
gogowq
@gogowq
Ozh domosh acha ozh
jQuery(document).ready(function($) {
  document.addEventListener('wpcf7mailsent', function(event) {
    var id = event.detail.contactFormId;
    var popupId = 'pamyatka-popap-<?php echo get_row_index(); ?>';

    // Проверяем, находимся ли мы внутри попапа с определенным ID
    if ($(event.target).closest('#' + popupId).length) {
      if (id == 19124) {
        window.open("<?php echo esc_url($m_dobavit_knopku['url']); ?>", '_blank');
      }
    }
  }, false);
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы