Düzgün bir Javascript biçiminde, önbelleği önledikten sonra formu gönderebilirsiniz. Bu, HTMLFormElement.submit()
never callsonSubmit()
'dan kaynaklanmaktadır. Bu nedenle, formu özel bir onsubmit işleyicisine sahip değil gibi sunmak için söz konusu şartname tuhaflığına güveniyoruz.Eşzamanlı bir istek için bkz this fiddle. bitirmek için bir zaman uyumsuz isteği bekliyorum
gibi kolaydır:
var submitHandler = (event) => {
event.preventDefault()
console.log('before')
setTimeout(function() {
console.log('done')
document.getElementById('formId').submit()
}, 1400);
console.log('after')
}
Bir asenkron isteğinin bir example benim keman bakabilirsiniz.
Ve vaatlerle düşerse:
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')
}
Ve burada that request bu.
Bu bir dupe, sadece bulamıyor: - /. Uzun lafın kısası, etkinliği tekrar tetiklemeniz ve varsayılan eylemi ikinci kez engellememeniz gerekir (bir bayrak kullanın). –
@FelixKling Bunu mu demek istediniz: http://stackoverflow.com/questions/7610871/how-to-trigger-an-event-after-using-event-preventdefault? –