@yoda_code

Действие по умолчанию submit формы и обработчик addEventListener(`click`)?

Здравствуйте. Имеется форма предшествующая завершению заказа. В ней предлагается либо оформить заказ, либо исправить данные. Внутри формы имеются две кнопки с type="submit". К форме привязан прослушиватель события клик и путем делегирования событий (через event.target) определяет какая из кнопок нажата и либо меняет action= формы (пересылает на страницу исправления), либо меняет код страницы добавляя сообщения для пользователя пока происходит формирование заказа и переход на страницу с оформленным заказом и его номером.
event.preventDefault() - не используется.
Код работает и страницы открываются, но хотелось бы уточнить. Будет ли во всех основных браузерах правильно срабатывать действие по умолчанию submit формы учитывая, что привязан обработчик к событию? Не нужно ли добавлять в конце каждого условия form.submit() в коде js? Я не добавлял, т.к. считаю, это задублирует submit действие по умолчанию браузера.
Будет ли корректно отрабатывать click на мобильных устройствах? (или стоит продублировать touthstart)?
Правильно ли сделано, что
default: return false;
break;
в случае неудовлетворения условиям, чтобы не срабатывали клики на других элементах кроме этих двух кнопок.

Сокращенный код прикладываю (между ним идут input)
<form name="purchase" id="endForm" action="{{ route('cart.order.complit') }}" method="post">
   <button name="backToCorrect" class="btn btn-default" type="submit" form="endForm">Исправить</button>
 <button name="goToPurchase" class="btn btn-danger" style="background: red;" type="submit" form="endForm">Подтвердить заказ</button>


Полный код функции и обработчика:
const endText = document.querySelector("#endMessage > h3");

        function buyerChoice (event){
        let backToCorrect = document.forms.purchase.backToCorrect;
        let goToPurchase = document.forms.purchase.goToPurchase;
            switch (event.target) {
                
                case backToCorrect:
            document.forms.purchase.action = '{{ route('cart.order') }}?mode=correct';
                    break;
                
                case goToPurchase:
            endText.innerText = `Ожидайте. Заказ формируется. Не закрывайте страницу`;
            goToPurchase.style.background = `#01b500`;
            goToPurchase.innerText = `Заказ формируется`;
            backToCorrect.classList.add(`hidden`);
            document.querySelector(`.spinner`).classList.remove(`hidden`);
                    break;
            
                default: return false;
                    break;
            }     
};
        document.forms.purchase.addEventListener(`click`, buyerChoice);
  • Вопрос задан
  • 147 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы