Не работают 2 AjaxForm на одной странице

Вызов первой формы phoneFormModal:
<div id="phone-popup" class="zoom-block white-popup mfp-hide">
 	[[!AjaxForm?
            &form=`tpl.phoneForm`
            &hooks=`recaptchav3,email`
            &validate=`name:required,phone:required`
            &emailSubject=`Заказ звонка с сайта site.net`
            &emailTo=`ex1@gmail.com`
            &emailTpl=`tpl.phoneFormSend`
            &emailFrom=`web@site.net`
            &emailFromName=`Пылюки`
            &validationErrorMessage=`В форме содержатся ошибки!`
            &successMessage=`Сообщение успешно отправлено.`
        ]]
</div>
tpl.phoneForm
<form id="phoneForm" method="post" enctype="multipart/form-data" role="form" action="[[~[[*id]]]]">
	<div class="field">
            <input type="text" name="name" placeholder="Имя" class="text" value="[[!+fi.name]]" required>
	</div>	
	<div class="field">
	    <input type="text" name="phone" placeholder="Телефон" class="phone" value="[[!+fi.phone]]" required>
	</div>
	<div class="quip-fld recaptcha">
	    [[!recaptchav3_render]]
	    <span class="error_g-recaptcha-response error"></span>
	</div>	
	<div class="field">
	    <button id="submit_phone" type="submit" name="submit_phone" value="Оправить" class="button medium yellow">Отправить</button>
	    [[+fi.success:is=`1`:then=`
               <div class="alert alert-success">[[+fi.successMessage]]</div>`
            ]]
            [[+fi.validation_error:is=`1`:then=`
            <div class="alert alert-error">[[+fi.validation_error_message]]</div>`
            ]]
	</div>
</form>

Вызов второй формы priceFormModal:
<div id="price-popup" class="zoom-block white-popup mfp-hide">
 	[[!AjaxForm?
            &form=`tpl.priceForm`
            &hooks=`recaptchav3,email`
	    &validate=`name:required,phone:required`
	    &emailSubject=`Запрос цены с сайта site.net`
	    &emailTo=`ex1@gmail.com`
	    &emailTpl=`tpl.priceFormSend`
	    &emailFrom=`web@site.net`
	    &emailFromName=`Пылюки`
	    &validationErrorMessage=`В форме содержатся ошибки!`
            &successMessage=`Сообщение успешно отправлено.`
    ]]
</div>
tpl.priceForm
<form id="priceForm" method="post" enctype="multipart/form-data" role="form" action="[[~[[*id]]]]">
	<div class="field">
	    <input type="text" name="name" placeholder="Имя" class="text" value="[[!+fi.name]]" required>
	</div>	
	<div class="field">
	    <input type="text" name="phone" placeholder="Телефон" class="phone" value="[[!+fi.phone]]" required>
	</div>	
	<div class="quip-fld recaptcha">
	    [[!recaptchav3_render]]
	</div>	
	<div class="field">
	    <button id="submit_price" type="submit" name="submit_price" value="Оправить" class="button medium yellow">Отправить</button>
	    [[+fi.success:is=`1`:then=`
        <div class="alert alert-success">[[+fi.successMessage]]</div>`
        ]]
        [[+fi.validation_error:is=`1`:then=`
        <div class="alert alert-error">[[+fi.validation_error_message]]</div>`
        ]]
	</div>
</form>
В шаблоне после footer:
[[$phoneFormModal]]
[[$priceFormModal]]
В данном примере письма приходят только от той формы, вызов которой раньше, то есть [[$phoneFormModal]], вторая форма отрабатывает, jGrowl зелёный, но письма не приходят. Если их в шаблоне поменять местами, письма будут приходить от той что выше. Мистика. Помогите пожалуйста.
Владимир
25 сентября 2020, 22:12
modx.pro
1 144
0

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

Сергій
25 сентября 2020, 23:53
0
Посмотри как я тут ooomti.ru/ разделил формы.
<script type="text/javascript">
    $(document).on('af_complete', function(event, response) {
    var form = response.form;
    response.message='';
    // Если у формы определённый id
    if (form.attr('id') == 'modal_form') {
        if (response.success) {
            $('#modal_form_ok').addClass('d-block');
             $('#modal_form_error').removeClass('d-block');
        } else {
             $('#modal_form_ok').removeClass('d-block');
             $('#modal_form_error').addClass('d-block');
        }
    }
    // Иначе печатаем в консоль весь ответ
    else if (form.attr('id') == 'callback_form') {
        if (response.success) {
            $('#callback_form_ok').addClass('d-block');
             $('#callback_form_error').removeClass('d-block');
        } else {
            $('#callback_form_ok').removeClass('d-block');
             $('#callback_form_error').addClass('d-block');
        }
    } else if (form.attr('id') == 'used-pipes_form') {
        if (response.success) {
            $('#used-pipes_form_ok').addClass('d-block');
            setTimeout (function(){
            $('#used-pipes_form_ok').removeClass('d-block');
         }.bind('#used-pipes_form_ok'), 5000);
             $('#used-pipes_form_error').removeClass('d-block');
        } else {
            $('#used-pipes_form_ok').removeClass('d-block');
             $('#used-pipes_form_error').addClass('d-block');
        }
    } else if (form.attr('id') == 'quiz_form') {
        if (response.success) {
            $('#quiz_form_ok').addClass('d-block');
        }
    }
});
</script>
    Алексей Ерохин
    26 сентября 2020, 15:06
    0
    submitVar в сниппетах задайте + hidden input name=submitvar
      Владимир
      27 сентября 2020, 22:43
      0
      Это как?
        Александр Мельник
        28 сентября 2020, 13:28
        0
        Чтобы идентифицировать какая форма отправлена у Formit есть такой параметр — submitVar
        docs.modx.com/current/en/extras/formit/index
        [[!AjaxForm?
                    &form=`tpl.priceForm`
                    &hooks=`recaptchav3,email`
        	    &validate=`name:required,phone:required`
        	    &emailSubject=`Запрос цены с сайта site.net`
        	    &emailTo=`ex1@gmail.com`
        	    &emailTpl=`tpl.priceFormSend`
        	    &emailFrom=`web@site.net`
        	    &emailFromName=`Пылюки`
        	    &validationErrorMessage=`В форме содержатся ошибки!`
                    &successMessage=`Сообщение успешно отправлено.`
            &submitVar=`submit_phone`
            ]]
        у вас в формах кнопки имеют разное name и это можно использовать.
        Указываете это name в &submitVar=`` для каждой формы свое и должно помочь.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      4