Авто закрытие FancyBox окна с формой Contact Form 7
Если вы используете плагин Contact Form 7, который открывается во всплывающем окне с помощью EasyFancybox или другого плагина, давайте разберёмся как автоматически закрыть окне после удачной отправки.
После того как пользователь сайта правильно заполняет форму, и CF7 отправляет письмо, у дива с классом «wpcf7-response-output» создаётся дополнительный css class «wpcf7-mail-sent-ok«, который говорит об удачной отправке.
Многие используют копипастный код, который выглядит вот так:
<script type="text/javascript"> document.addEventListener( 'wpcf7mailsent',function( event ){ $.fancybox.close(); }, false ); </script>
Но я решил пойти другим путём, тем более, что данный код не будет работать на сайте, так как $.fancybox нужно использовать внутри jQuery документа. Давайте сначала исправим этот косяк, а так же перед закрытием окна, уведомим пользователя!
<script type="text/javascript"> jQuery(document).ready(function($){ document.addEventListener('wpcf7mailsent',function(event){ alert("Ваше сообщение принято!"); $.fancybox.close(); },false); }); }); </script>
А теперь мой вариант с установленным плагином FancyBox.
Что делает скрипт?
Он проверяет в реальном времени изменения в ДИВ элементе с классом «pcf7-response-output», и если у него добавится класс «wpcf7-mail-sent-ok» скрипт закрывает окно. Для проверки изменений в диве восопльзуемся событием «DOMSubtreeModified».
<script type="text/javascript"> jQuery(document).ready(function($){ $("body").on('DOMSubtreeModified', ".wpcf7-response-output", function() { if( $(this).hasClass(".wpcf7-mail-sent-ok"){ $.fancybox.close(); } }); }); </script>
Если popup окно сделано с помощью другого плагина, то нам нужно узнать css class кнопки. которая закрывает окно, в моём случае кнопка имеет класс «close_win», у вас он может быть совершенно другой
После успешной отправки, нам нужно программно нажать на кнопку закрытия.
<script type="text/javascript"> jQuery(document).ready(function($){ $("body").on('DOMSubtreeModified', ".wpcf7-response-output", function() { if( $(this).hasClass(".wpcf7-mail-sent-ok"){ $('.close_win').trigger('click'); } }); }); </script>