D'une manière purement Javascript, vous pouvez soumettre le formulaire après avoir empêché le défaut.
Cela s'explique par le fait que HTMLFormElement.submit()
n'appelle jamais le site onSubmit()
. Nous nous appuyons donc sur cette spécification étrange pour soumettre le formulaire comme s'il n'avait pas de gestionnaire onsubmit personnalisé.
var submitHandler = (event) => {
event.preventDefault()
console.log('You should only see this once')
document.getElementById('formId').submit()
}
Voir ce violon pour une demande synchrone.
Attendre la fin d'une requête asynchrone est tout aussi simple :
var submitHandler = (event) => {
event.preventDefault()
console.log('before')
setTimeout(function() {
console.log('done')
document.getElementById('formId').submit()
}, 1400);
console.log('after')
}
Vous pouvez consulter mon violon pour une exemple d'une demande asynchrone.
Et si vous êtes en panne de promesses :
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')
}
Et voici que demande .