AjaxForm пропускает валидацию если делать редирект через af_complete

1. Если все поля в форме заполнены, то форма приходит на почту и сохраняется в FormIt.
2. Если какое-то поле из тех что указано в &validate не заполнено, то форма не приходит на почту и не сохраняется в FormIt, однако редирект срабатывает и мы видим страницу «Спасибо!»
3. Еще почему-то не срабатывает уловка от спама в виде &validate=`nospam:blank`, если поле заполнить, то сообщение всё равно уходит и сохраняется в Formit

AjaxForm вызываю так:
[[!AjaxForm? 
    &form=`FeedbackForm.tpl`
    &hooks=`FormItSaveForm,email`
    &emailTpl=`FeedbackTemplate.mail`
    &emailSubject=`Сообщение с сайта My.Agency`
    &emailTo=`newman-xxx@mail.ru`
    &emailFrom=`info@my.agency`
    &validate=`phone:required,
    name:required,
    message:required,
    nospam:blank`
    &validationErrorMessage=`В форме содержатся ошибки!`
]]

Скрипт для редиректа из инструкции:
<script type="text/javascript">
       	$(document).on('af_complete', function(event, response) {
            var form = response.form;
            if (form.attr('id') == 'callback-form') {
               window.location.href = "[[~25]]"
            }
        });
</script>
Памагити…
Серый
16 октября 2019, 11:32
modx.pro
865
0

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

Павел Романов
16 октября 2019, 11:42
1
+1
А так?
<script>
       	$(document).on('af_complete', function(event, response) {
            var form = response.form;
            if (form.attr('id') == 'callback-form' && response.success) {
               window.location.href = "[[~25]]"
            }
        });
</script>
    Серый
    16 октября 2019, 11:48
    0
    СПАСИБО!!!
    Валерий
    14 июня 2023, 16:12
    0
    А вот у меня не сработала альтернативная проверка.
    Единственное, у моей формы работает валидация на большинстве устройств, а вот у одного сотрудника на Safari 14 проверка не осуществляется и форма переходит на страницу «Спасибо». Сама форма, само собой, не отправляется.

    Как думаете, что еще можно сделать? Кроме насильного обновления браузера…

    [[!AjaxForm?
        &snippet=`FormIt`
        &preHooks=`Formit2AjaxUpload`
        &hooks=`AjaxUpload2Formit,AjaxUploadAttachments,pdf,email,FormItAutoResponder`
        &ajaxuploadFieldname=`image`
        &ajaxuploadTarget=`images/user/`
        &ajaxuploadUid=`image`
        &form=`tpl_form_ind_member`
        &emailTpl=`tpl_email`
        &pdfTpl=`tpl_PDF_ind_member`
        &cssTpl=`tpl_css_user`
        &author=`orgi_ru`
        &title=`Заявка: Гештальт-терапевт, действительный член`
        &emailSubject=`Заявка: Гештальт-терапевт, действительный член`
        &emailTo=`ysilence@yandex.ru,argigt@mail.ru`
        &emailFrom=`info@argigt.ru`
        &fiarReplyTo=`argigt@mail.ru`
        &fiarFrom=`info@argigt.ru`
        &fiarSender=`info@argigt.ru`
        &fiarFromName=`АРГИГТ`
        &fiarTpl=`tpl_email`
        &fiarToField=`email_sender`
        &fiarSubject=`Анкета на вступление в ассоциацию`
        &validate=`email_sender:email:required, fio_sender:required, phone_sender:required, passportNumber_sender:required, passportMVD_sender:required, passportDate_sender:required, adress_sender:required, born_sender:required, workPlace_sender:required, workPost_sender:required, instName_sender:required, instArgigt1_sender:required, instArgigt2_sender:required, instArgigt3_sender:required`
        &validationErrorMessage=`Ошибка в форме`
        &successMessage=`Сообщение отправлено`
        &submitVar=`fizassociate`
    ]]
    И скрипт:

    $(function(){
        $(document).on('af_complete', function(event, response) {
            var form = response.form;
            if (form.attr('id') == 'form-anketa' && response.success) {
        	   window.location.href = "https://argigt.ru/vasha-zayavka-otpravlena.html"
            }
        });
    });
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      3