2 回答

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個贊
因?yàn)樗且粋€ type="submit" 按鈕,所以 event.preventDefault() 阻止了 "submit" 事件觸發(fā)(而 "submit" 事件是將數(shù)據(jù)發(fā)送到后端的原因)。
與其在按鈕上監(jiān)聽“點(diǎn)擊”事件,我認(rèn)為最好在表單上監(jiān)聽“提交”事件。當(dāng)您單擊 type="submit" 的按鈕時,它將在表單上觸發(fā)。
表單現(xiàn)在將成為事件的目標(biāo)。
let form = document.getElementById('my-form')
form.addEventListener('submit', function(event) {})
因此,在您的函數(shù)開始時,您應(yīng)該能夠通過調(diào)用來阻止提交操作
event.preventDefault();
但是,您也可以將表單存儲到局部變量中,因?yàn)檫@是觸發(fā)提交事件的元素:
let form = event.target
然后,如果沒有錯誤,您可以在函數(shù)結(jié)束時觸發(fā)表單上的提交:
form.submit()
全部一起:
let form = document.getElementById('my-form')
form.addEventListener('submit', function(event) {
event.preventDefault()
let form = event.target
let errors = false;
//do all of the error checking here, if there's an error, set errors to true
if(!errors) {
form.submit()
}
})
(可能有更好的方法,但這是我能想到的。此外,通過向每個輸入添加“名稱”屬性而不是查詢每個輸入,獲取所有數(shù)據(jù)值可能更容易場地)。
添加回答
舉報(bào)