表单的eventListener无效

时间:2017-08-10 08:40:38

标签: javascript html html5 forms validation

我试图抓住表格的invalid事件,但它似乎不会发生?

https://codepen.io/MartinMuzatko/pen/VzWwxG?editors=1010

对于我的用例,我需要在表单上有监听器(用于异步表单验证)。因此,将听众附加到个人输入不是我的选择。

根据规范,当某些输入无效时,表单应触发invalid事件。

https://www.w3.org/TR/html5/forms.html#client-side-form-validation

1 个答案:

答案 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)

更新笔:https://codepen.io/theLufenk/pen/Ojgmxz?editors=1011