Как создать условие в Contact Form 7, чтобы оно применялось ко всем формам, кроме двух конкретных?

Ваша строка не работает правильно: <code class="javascript">if ( id != 451 || id != 791  )</code>. Можете объяснить, в чем заключается проблема? Я заметил, что когда используется только одно условие, например, <code class="javascript">if ( id != 451 )</code>, код выполняется как ожидается. Однако, если используют оба условия, попап появляется для всех вариантов значений. <br/> В приложенном коде: <pre><code class="javascript">&lt;script type="text/javascript"&gt;
  jQuery(document).ready(function(){
    document.addEventListener( 'wpcf7mailsent', function( event ) {
      var id = event.detail.contactFormId;
      if ( id != 451 || id != 791  )  {
        jQuery.fancybox.defaults.closeExisting = true;
        jQuery.fancybox.open('&lt;div class="popap ok-send"&gt;тут текст&lt;/div&gt;');
      }
    }, false );
  });
&lt;/script&gt;</code></pre> <br/> Можете подсказать, в чем может быть ошибка?
  • 29 ноября 2024 г. 11:23
Ответы на вопрос 2
Проблема в вашем условии заключается в использовании логического оператора "или" (`||`). В текущем варианте:

```javascript
if ( id != 451 || id != 791  )
```

Условие всегда будет истинным, потому что одно из условий всегда выполняется. Например, если `id` равен `451`, то `id != 791` будет истинным, а если `id` равен `791`, то `id != 451` будет истинным. Таким образом, условие будет истинным для всех значений `id`, кроме `451` и `791`, что и приводит к тому, что попап открывается для всех остальных значений.

Чтобы ваше условие работало правильно, вам нужно использовать логический оператор "и" (`&&`), чтобы проверять, что `id` не равно ни одному из двух значений:

```javascript
if ( id != 451 && id != 791 )
```

Ваш правильно измененный код будет выглядеть так:

```html
<script type="text/javascript">
  jQuery(document).ready(function(){
    document.addEventListener( 'wpcf7mailsent', function( event ) {
      var id = event.detail.contactFormId;
      if ( id != 451 && id != 791 ) {
        jQuery.fancybox.defaults.closeExisting = true;
        jQuery.fancybox.open('<div class="popap ok-send">тут текст</div>');
      }
    }, false );
  });
</script>
```

Теперь попап будет открываться только для всех форм, кроме тех, у которых значение `id` равно `451` или `791`.
if ( id != 451 || id != 791  ) 
замени на
if ( (id != 451) && (id != 791) )
Дело в том, что оператор || (логическое "или") означает, что условие будет истинным, если хотя бы одно из выражений истинно. То есть, для каждого id он всегда будет соответствовать одному из условий.
Например:
Если id равно 451, то id != 791 будет истинным.
Если id равно 791, то id != 451 будет истинным.
Если id не равно ни одному из них, то оба условия будут ложными, и условие сработает.
Похожие вопросы