2015-01-31 3 views
0

Глупо, что я не могу найти это, поэтому извиняюсь заранее, если я дублировал, но я просмотрел поисковые системы и так не нашел, что мне нужно.Каков правильный способ отправки HTML-формы после асинхронной загрузки данных?

Каков правильный способ отправки HTML-формы при нажатии пользователем, но только после того, как я получил асинхронно загруженные данные из стороннего API, чтобы заполнить некоторые скрытые поля формы?

Я попробовал эту структуру, которая не работала:

form onclick = function1() 
function1() calls function apicall that retrieves info from 3rd party api and in its completion handler then calls function2 
function2 checks all form fields and returns true if form should be submitted, false if it should not 

С этой структурой, моя форма всегда представляется, хотя как третья сторона апи функции обработчика завершения и function2 правильно работают сами по себе. function2 может возвращать false весь день, но форма все равно отправляется. Что я могу сделать по этому поводу? Асинхронное время кажется правильным, но как-то возврат false не возвращается к элементу FORM.

Благодарим вас за любые советы или образцы кода.

+0

Вы отправляете форму в функцию обратного вызова API. – Barmar

ответ

2

Асинхронные функции ничего не могут вернуть - вызывающий абонент не ждет их завершения. Поэтому обработчик onsubmit формы должен return false, чтобы предотвратить отправку формы.

Тогда в function2(), если форма проверки преуспевает, он может позвонить

document.getElementById('formID').submit(); 

для выполнения фактического представления формы.

+0

Это так смущающе, что я не знал, что вы можете напрямую отправить форму с помощью javascript. Спасибо! – Beeb

Смежные вопросы