Ajax срабатывает только со второго раза

207
18 октября 2018, 13:10

Есть более-менее стандартная форма, которая проверяется при помощи Ajax. Проблема в том, что она начинает работать только со второго раза, после перезагрузки страницы. Еще трудности добавляет то, что код - не мой и у меня плохо получается разобраться, в чем проблема.

Ссылка на саму форму: https://www.advantika.ru/test.php

JavaScript:

$('.form form').submit(function(e) {
if(!! window.FormData){
    e.preventDefault();
    $form = $(this);
    $submitButton = $form.find('[name="web_form_submit"]');
    $submitButton.addClass('proceed').prop('disabled', true);
    var formData = new FormData(this);
    formData.append('web_form_submit', $submitButton.val());
    $.ajax( {
        url: 'https://www.advantika.ru/_formHandler.php',
        type: 'POST',
        data: formData,
        processData: false,
        contentType: false,
        cache: false,
        success: function(response){
            $response = $(response);
            if($response.find('.form-form-note').length > 0){
                if('order' == $form.attr('name')){
                    var checkedServices = [];
                    $form
                    .find('.form-services')
                    .find('[type=checkbox]')
                    .each(function(){
                        if(true === $(this).is( ':checked' )){
                            checkedServices.push($(this).attr('data-gtm-val'));
                        }
                    });
                    var gtmEventLabel = document.URL + '|' + checkedServices.join('.') + '|';
                }else{
                    var gtmEventLabel = document.URL;
                }
                dataLayer.push({
                    'event': 'adv.event',
                    'eventCategory': 'formSubmit',
                    'eventAction': $form.attr('name'),
                    'eventLabel': gtmEventLabel,
                    'eventValue': 0,
                    'eventNonInteraction': false
                });
                $form.find('.form-element input').val('');
                $form.find('.form-element textarea').val('');
                $form.find('input[type=checkbox]').prop('checked', false);
            }
            $form.find('.form-messages').stop().html($response.find('.form-messages').stop().html());
            $submitButton.prop('disabled', false).removeClass('proceed');
        }
    });
    return false;
}else{
    $(this).submit();
}
});
Answer 1

xAqweRx ответил на вопрос в комментариях, я решил вынести его в ответы, чтобы было заметнее:

самый простой вариант - попробовать поменять $('.form form').submit(function(){}) на $(document).on('submit','.form form',function(){ ... } )

READ ALSO
вывести картинку js

вывести картинку js

Есть таблица динамическая по нажатию на кнопку добавляются поляЕсть первое поле оно сделано autocomplete, а в стольные поля информация подтягивается...

233
Получить текст из блока

Получить текст из блока

Есть блок из которого нужно вытащить текст, код блока выглядит так:

242
Сортировка массива из csv

Сортировка массива из csv

Подскажите пожалуйста как грамотно формировать массивы и сортировать их по разным параметрамЕсть отзывы которые я должен сортировать по:

200
Scale анимация для WPF окна

Scale анимация для WPF окна

Попробовал этот код:

229