似乎呼叫.submit()
表單會忽略添加的偵聽器:
document.querySelector('form').addEventListener('submit', e => {
e.preventDefault()
console.log(Object.fromEntries(new FormData(e.target)))
})
document.querySelector('#no-trigger').addEventListener('click', () => {
document.querySelector('form').submit()
})
<form>
<input name="example" id="example">
<button id="trigger">trigger listener</button>
</form>
<button id="no-trigger">don't trigger listener</button>
我希望單擊no-trigger
按鈕也會觸發偵聽器,但它會重新加載頁面。
uj5u.com熱心網友回復:
這是預期的行為。來自 MDN:
form.submit()
直接呼叫方法時不會將事件發送到表單。
從規范(強調我的):
form.submit()
提交表單,繞過互動式約束驗證并且不觸發提交事件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/516328.html