2 回答

TA貢獻1777條經驗 獲得超3個贊
因為它是一個 type="submit" 按鈕,所以 event.preventDefault() 阻止了 "submit" 事件觸發(而 "submit" 事件是將數據發送到后端的原因)。
與其在按鈕上監聽“點擊”事件,我認為最好在表單上監聽“提交”事件。當您單擊 type="submit" 的按鈕時,它將在表單上觸發。
表單現在將成為事件的目標。
let form = document.getElementById('my-form')
form.addEventListener('submit', function(event) {})
因此,在您的函數開始時,您應該能夠通過調用來阻止提交操作
event.preventDefault();
但是,您也可以將表單存儲到局部變量中,因為這是觸發提交事件的元素:
let form = event.target
然后,如果沒有錯誤,您可以在函數結束時觸發表單上的提交:
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()
}
})
(可能有更好的方法,但這是我能想到的。此外,通過向每個輸入添加“名稱”屬性而不是查詢每個輸入,獲取所有數據值可能更容易場地)。
添加回答
舉報