我试图抓住表格的invalid
事件,但它似乎不会发生?
https://codepen.io/MartinMuzatko/pen/VzWwxG?editors=1010
对于我的用例,我需要在表单上有监听器(用于异步表单验证)。因此,将听众附加到个人输入不是我的选择。
根据规范,当某些输入无效时,表单应触发invalid
事件。
https://www.w3.org/TR/html5/forms.html#client-side-form-validation
答案 0 :(得分:3)
'无效'事件不是“冒泡”。它触发特定的输入元素,该元素无效并且不会冒泡到表单元素。您需要在输入元素上附加侦听器。
var input = document.querySelector('form input')
input.addEventListener('invalid', (e)=>{
console.log('invalid')
});
更新了笔: https://codepen.io/theLufenk/pen/WEONBw?editors=1010
或者,如果您想在表单级别捕获事件,则必须使用事件捕获。
var form = document.querySelector('form')
form.addEventListener('invalid', (e)=>{
console.log('invalid')
},true)