De forma pura con Javascript, puede enviar el formulario después de evitar el incumplimiento.
Esto se debe a que HTMLFormElement.submit() nunca llama al onSubmit(). Por lo tanto, confiamos en esa rareza de la especificación para enviar el formulario como si no tuviera un controlador onsubmit personalizado aquí.
var submitHandler = (event) => {
event.preventDefault()
console.log('You should only see this once')
document.getElementById('formId').submit()
}
Vea este violín para una solicitud sincrónica.
Esperar a que finalice una solicitud asincrónica es igual de fácil:
var submitHandler = (event) => {
event.preventDefault()
console.log('before')
setTimeout(function() {
console.log('done')
document.getElementById('formId').submit()
}, 1400);
console.log('after')
}
Puede consultar mi violín para ver un ejemplo de una solicitud asincrónica.
Y si estás deprimido con promesas:
var submitHandler = (event) => {
event.preventDefault()
console.log('Before')
new Promise((res, rej) => {
setTimeout(function() {
console.log('done')
res()
}, 1400);
}).then(() => {
document.getElementById('bob').submit()
})
console.log('After')
}
Y aquí está esa solicitud .