Chupachar
@Chupachar
front-end dev

Почему происходит sumbit по клику сразу после первой заполненной формы в не зависимости от количества форм?

Всем добрый. Имеется страница с несколькими формами, которые создаются динамически на предыдущей странице в зависимости от выбора пользователя (пользователь нажал 3, на следующей странице появилось 3 формы). Все работало хорошо, формы поочередно заполнялись и пользователя роутило на следующую страницу, до того момента пока я не добавил условие на проверку cookie, if (cookieHasAuto > 0). В данном случае, если cookie > 0, то при заполнении только одной формы сразу отработает if(valid) и пользователя зароутит сразу же сюда redirectToPassCar(); даже если он выбрал те же 3 формы, как будто сразу отключается e.preventDefault(). Подскажите пожалуйста в чем причина, я набросал приблизительный код того, что происходит в проекте.

<form action="">
  <div class="parent-block">
    <input type="text">
    <div></div>
    <button class="btn" type="submit">click</button>
  </div>
</form>


/*  cookieHasAuto */ //данные в куки, могут быть 1 или 0

 form.addEventListener("click", function(e) { //кликаю по кнопке какой-то из форм
   e.preventDefault();
   const parentBlock = e.target.closest(
     ".parent-block"
   );

   if (e.target.classList.contains("btn")) { //нахожу кликнутую кнопку
     let valid = true; //флаг валидации
     //test validation 
     input.forEach((data) => {
       if (data.value == null || data.value === "") {
         data.nextElementSibling.innerHTML =
           "заполните пустое поле";
         valid = false;
       } else {
         data.nextElementSibling.innerHTML = "";
       }
     });
     if (valid) { // если вся валидация успешна, выполнить следующий код
       if (cookieHasAuto > 0) {
         redirectToPassCar(); //если куки == 1, то редирект сюда
       } else {
         redirectToPassView(); //если куки == 0, то редирект сюда
       }
     }
   }
 })


jsfiddle.net/a8jmuov1/7
  • Вопрос задан
  • 112 просмотров
Пригласить эксперта
Ответы на вопрос 2
sslion
@sslion
попробуй у кнопки поменять тип с submit на button
Ответ написан
imko
@imko
Senior Scratch Developer
ну во первых чтобы кликать по кнопке в одной из форм надо слушатель писать не на форму а на кнопки)а во вторых клик по кнопке которая отправляет форму срабатывает раньше чем вспылвает на форму, так что не предотвращается по сути ничего
Ответ написан
Ваш ответ на вопрос

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

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