ด้วยวิธี Javascript คุณสามารถส่งแบบฟอร์มหลังจากป้องกันค่าเริ่มต้น
เนื่องจากHTMLFormElement.submit()
ไม่เคยเรียกไฟล์onSubmit()
. ดังนั้นเราจึงอาศัยความแปลกของข้อกำหนดนั้นในการส่งแบบฟอร์มราวกับว่าไม่มีตัวจัดการการส่งข้อมูลที่กำหนดเองที่นี่
var submitHandler = (event) => {
event.preventDefault()
console.log('You should only see this once')
document.getElementById('formId').submit()
}
ดูซอนี้สำหรับคำร้องขอแบบซิงโครนัส
การรอให้คำขอ async เสร็จสิ้นนั้นง่ายมาก:
var submitHandler = (event) => {
event.preventDefault()
console.log('before')
setTimeout(function() {
console.log('done')
document.getElementById('formId').submit()
}, 1400);
console.log('after')
}
คุณสามารถตรวจสอบซอของฉันสำหรับตัวอย่างคำขอแบบอะซิงโครนัส
และหากคุณผิดหวังกับคำสัญญา:
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')
}
และนี่คือที่ร้องขอ