Метод submit у формы асинхронен?

77
24 августа 2019, 20:10

Столкнулся с проблемой (не ожидаемым поведением) в ФФ, когда определенный код выполнялся после form.submit(), хотя казалось, что этого не должно быть... При чем в Хроме все работало ожидаемо. Набросал код-иммитацию:

const form = document.getElementById('send') 
form.addEventListener('submit', ()=>{ 
  console.log("Hi, from submit") 
}) 
setTimeout(function() { 
  form.submit(); 
  setTimeout(function(){ 
    console.log(123)  
   },0) 
}, 1000)
<form action="" id="send"> 
   <input type="text" name="firstname" id=""> 
   <button type="submit">Click</button> 
</form>

По идее, console.log(123) мы не должны увидеть, однако видим. Получается, что submit асинхронен?

П.С.: в реальности ситуация была такова (выдержка из кода):

//отправка данных формы, после валидации
    form.submit()
//идет перебор элементов формы, в котором эти элементы дизейблятся
        elements.forEach(elm => {
            elm.readOnly = true
            elm.disabled = true
        })

В ФФ проблема возникла в том, что на сервер значения инпутов приходили пустыми. Проблема исчезла, когда была удалена строка elm.disabled = true. Это говорит о том, что полям формы успевал применится атрибут disabled и, соответственно, значения не передавались на сервер.

Answer 1

Страница существует, и js в ней выполняется, пока в браузер не придет первый байт ответа на сабмит.

READ ALSO
JS - Замена символов в файле [закрыт]

JS - Замена символов в файле [закрыт]

Есть файл, который содержит:

84
Конвертирование base64 строки в массив байт

Конвертирование base64 строки в массив байт

На страничке необходимо загрузить в input type file, а так же вывести эту картинку в imgА далее ajax запросом передать base64 строку на сервер и там перевести...

118
Как правильно оформить динамический manifest.json в PWA?

Как правильно оформить динамический manifest.json в PWA?

Нужно в аяксе после успешного ответа от сервера показывать кнопку для сохранения приложения на рабочий столСделал динамический манифест...

111