W czysty sposób JavaScript można przesłać formularz po zablokowaniu domyślnego.
Dzieje się tak, ponieważ HTMLFormElement.submit()
never calls the onSubmit()
. Tak więc polegamy na tym dziwactwie specyfikacji, aby przesłać formularz tak, jakby nie miał on niestandardowego programu obsługi onsubmit.
var submitHandler = (event) => {
event.preventDefault()
console.log('You should only see this once')
document.getElementById('formId').submit()
}
Aby uzyskać synchroniczne żądanie, patrz this fiddle.
Oczekiwanie na żądanie asynchronicznym skończyć jest równie proste:
var submitHandler = (event) => {
event.preventDefault()
console.log('before')
setTimeout(function() {
console.log('done')
document.getElementById('formId').submit()
}, 1400);
console.log('after')
}
Można sprawdzić moje skrzypce na example asynchronicznej życzenie.
A jeśli jesteś w dół z obietnic:
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')
}
i oto that request.
To dupek, po prostu nie można go znaleźć: - /. Krótko mówiąc, musisz wyzwolić zdarzenie ponownie i nie zapobiegać domyślnej akcji po raz drugi (użyj flagi). –
@FelixKling Czy chodziło Ci o http://stackoverflow.com/questions/7610871/how-to-trigger-an-event-after-using-event-preventdefault? –