Auf reine Javascript-Weise können Sie das Formular senden, nachdem Sie die Standardeinstellung verhindert haben.
Dies liegt daran , HTMLFormElement.submit() nie ruft die onSubmit(). Wir verlassen uns also auf diese Seltsamkeit der Spezifikation, um das Formular so einzureichen, als ob es hier keinen benutzerdefinierten Onsubmit-Handler hätte.
var submitHandler = (event) => {
event.preventDefault()
console.log('You should only see this once')
document.getElementById('formId').submit()
}
Siehe diese Geige für eine synchrone Anfrage.
Das Warten auf den Abschluss einer asynchronen Anforderung ist genauso einfach:
var submitHandler = (event) => {
event.preventDefault()
console.log('before')
setTimeout(function() {
console.log('done')
document.getElementById('formId').submit()
}, 1400);
console.log('after')
}
Sie können meine Geige nach einem Beispiel für eine asynchrone Anforderung durchsuchen.
Und wenn Sie mit Versprechungen unten sind:
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')
}
Und hier ist diese Bitte .