In einer reinen Javascript-Methode können Sie das Formular nach dem Verhindern von Standard übermitteln.
Dies ist weil HTMLFormElement.submit()
never calls die onSubmit()
. Wir verlassen uns also auf diese Spezifikation, um das Formular so zu übermitteln, als ob es hier keinen benutzerdefinierten Handler für das Übergeben von Nachrichten gibt.
var submitHandler = (event) => {
event.preventDefault()
console.log('You should only see this once')
document.getElementById('formId').submit()
}
Siehe this fiddle für eine synchrone Anfrage.
für eine Asynchron-Anfrage ist genauso einfach zu beenden Warten:
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 Besuche für ein example eine asynchrone Anfrage.
Und wenn Sie unten mit dem Versprechen:
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 that request.
Das ist dupe, kann es einfach nicht finden: - /. Kurz gesagt, Sie müssen das Ereignis erneut auslösen und die Standardaktion nicht ein zweites Mal verhindern (verwenden Sie eine Markierung). –
@FelixKling Meinten Sie http://stackoverflow.com/questions/7610871/how-to-trigger-an-event-after-using-event-preventdefault? –