@danil_linkins

Почему форма на Ajax в MODx отправляется/приходит 5 раз?

Может кто сталкивался с подобной проблемой,
форма магическим образом приходит 5 раз на почту.

Сам механизм выглядит стандартн.
Работает на FormIt.
Через Ajax.

Модальное окно:
<div class="popup-uniq">
	<img src="/assets/images/close.png" class="close">
	<div class="text col-md-7 col-sm-7">
	    <h3>День открытых дверей</h3>
		<p>дата место</p>
        
        <div class="radio-list">
            <input type="radio" id="radio01" name="address" value="адрес 1" form="krsndr-form" checked />
            <label for="radio01"><span></span>адрес 1</label><br>
            <input type="radio" id="radio02" name="address" value="адрес 2" form="krsndr-form" />
            <label for="radio02"><span></span>адрес 2</label>
        </div>
        
        <p>текст</p>
	</div>
	[[$form-only-form]]
</div>


Обработка формы:
[[!AjaxForm?
	&snippet=`FormIt`
	&form=`tpl-only-form`
	&hooks=`email,order_to_amo`
	&emailSubject=`тема`
	&emailTpl=`EmailTpl-only-form`
	&emailTo=`myemail@mail.ru`
	&emailFrom=`[[$email_from]]`
	
	
	&ClientName=`name`
	&ClientPhone=`phone`
	&ClientEmail=`email`
	&ClientAddress=`address`
	
	
	&validate=`phone:required`
	&validationErrorMessage=`В форме содержатся ошибки!`
	&successMessage=`Спасибо за оставленную заявку. <br />Наши менеджеры свяжутся с Вами`
]]


Сама форма:
<form id="krsndr-form" method="POST" action="" class="col-md-offset-1 col-md-4 col-sm-4">
	<h3>Заголовок</h3>
	<h3 class="special">[[cpElements? &prop=`titleForm`]]</h3>
	<div class='block'>
		<input type="hidden" name="typeform" value="Всплывающее окно">
		<!--label for="name">Введите Ваше имя</label-->
		<input required type="text" class="name" name="name" placeholder="Введите Ваше имя">
		<!--label for="phone">Введите Ваш телефон</label-->
		<input required class='phone' type="text" name="phone" class="phone" placeholder="Введите Ваш телефон">
		<input required class='email' type="text" name="email" class="email" placeholder="Введите Ваш e-mail">
	</div>
	[[+utms_fields]]
	<div class='block'>
		<button type='submit'>Записаться</button>
		<button type='submit' class="special">[[cpElements? &prop=`button`]]</button>
	</div>	
</form>


Текст письма:
<h1>Заявка с сайта [[!SERVER? &key=`HTTP_HOST`]]</h1>

Пользователь оставил заявку

<br />
<br />
<b>Имя:</b> [[+name]]<br>
<b>Телефон:</b> [[+phone]]<br>
<b>Email:</b> [[+email]]<br>
<b>Адрес:</b> [[+address]]
<br />
<br />

Страница на которой находится посетитель: <a href="[[~[[*id]]]]">[[*pagetitle]]</a><br />
Адрес веб сайта с которого пришел  посетитель:<a href="[[+referer]]">[[+referer]]</a><br />
IP - адрес: [[!SERVER? &key=`REMOTE_ADDR`]]<br />
Дата: [[!date? &format=`d.m.Y H:i`]]

[[+utm:default=``]]


Скрипт отправки:
$(function() {
      $('form').submit(function(e) {
        var $form = $(this);
        $.ajax({
          type: $form.attr('method'),
          url: $form.attr('action'),
          data: $form.serialize(),
        }).done(function(data) {
        	if(data){
        	//$('form button').after('<div class="success"><p>Сообщение отправлено</p></div>');
        	$('.popup').fadeOut();
        	$('.popup-point').fadeOut();
          $('.popup-uniq').fadeOut();
        	$('.popup-success').fadeIn();
        	$('section.popup_bg').fadeIn();
          //console.log('success');
          ga('send', 'event', 'Forms', 'submit', 'Kursi');
         	}
        }).fail(function() {
         // console.log('fail');
        });
        //отмена действия по умолчанию для кнопки submit
        e.preventDefault(); 
      });

});


Скрипт находится не в документ реди. а просто как функция в файле.
Проверил, вызывается ли файл несколько раз, вроде потягивается только один раз.

помогите советом пожалуйста.
  • Вопрос задан
  • 986 просмотров
Пригласить эксперта
Ответы на вопрос 1
qork
@qork
{ background: #F00B42 }
Постой, зачем вешать ajax-запрос на submit формы, если уже AjaxForm используется? Только укажи action у формы ту же самую страницу: action="[[~[[*id]]]]"
Ответ написан
Ваш ответ на вопрос

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

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