@berch

Почему после отправки формы событие submit больше не срабатывает?

В html есть несколько похожих модалок (отличаются только классами самих модалок и содержимым input "form-title"):
<section class="popup popup-partner">
    <div class="popup__wrapper">
    </div>
    <div class="popup__content">
            <form action="send.php" method="POST" class="form__form" novalidate>
                <input type="hidden" name="form-title" value="Стать партнером">
                <p class="input"><input type="text" name="form-name" placeholder="Введите ваше имя" required=""></p>
                <p class="input"><input type="tel" name="form-phone" placeholder="Номер телефона" required=""></p>
                <button class="button button--green" type="submit">Отправить</button>
                <p class="person form__pers">Нажимая на кнопку, Вы даете согласие на <a href="politic.pdf" download>обработку персональных данных</a></p>
            </form>
            <button class="popup__close" type="button"></button>
    </div>
</section>


Код отправки с валидацией(ее убирала, проблема оставалась):
$('form').on('submit', function(evt) {
    console.log('Событие submit');
    evt.preventDefault();
    
    var flag = false;
	
    var $form = $(this);
    var $inputs = $form.find('input:invalid');
    
    $.each($inputs, function() {
        if (!$(this).parent('p').hasClass('error')) {
            $(this).parent('p').addClass('error');
        }
    });

    if ($inputs.length === 0) flag = true;
	
    if (flag) {
        $.ajax({ 
            type: "POST",
            url: "/send.php",
            data: $form.serialize(),
            success: function(t) {
                if (t == 1) {
                    $('.popup').removeClass('popup--active');
                    $('input, textarea', $form).val('');
                    $('.success').css('display', '');
                    
                    $('body').click(function(e) {
                        e.preventDefault();
                        $('.success').css('display', 'none');
                    });
                }
            }
        })
	}
});
$('input').on('click', function() {
    if ($(this).parent('p').hasClass('error')) {
        $(this).parent('p.error').removeClass('error');
        $(this).focus();
    }
});


После первой отправки формы перестает срабатывать событие Submit на всех формах на странице и перестают работать все ссылки (кроме якорей).
Если повесить обработчик на клик по кнопке "Отправить", то проблема с повторной отправкой формы уходит, но проблема с ссылками остается.
Подскажите, пожалуйста, хоть примерно из-за чего это может быть. Или как отследить откуда идет такая блокировка. В скриптах еще есть подключение нескольких плагинов, но они к форме никак не относятся.
  • Вопрос задан
  • 808 просмотров
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
$('body').click(function(e) {
                        e.preventDefault();
                        $('.success').css('display', 'none');
                    })

по суксессу вы зачем то на body вешаете листенер который заставляет ВЕСЬ документ ложить болт на клики. Подумайте для чего это и что нужно вместо этого, а так же зачем вообще у вас этот код...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
28 нояб. 2024, в 05:21
2000 руб./за проект
28 нояб. 2024, в 05:18
500 руб./за проект
28 нояб. 2024, в 03:51
3500 руб./за проект