2017-08-10 5 views
0

フォームのinvalidイベントをキャッチしようとしていますが、それは起こりそうにありませんか?私のユースケースについてはフォームの無効なイベントリスナー

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

、私は(非同期フォーム検証のための)フォーム上のリスナーを持っている必要があります。だから、個々の入力にリスナーを付けることは私の選択肢ではありません。

仕様によると、フォームは入力の一部が無効なときにinvalidイベントを発生させるはずです。

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

答えて

2

'無効' イベントは、 "バブリング" されていません。これは無効な特定の入力要素で発生し、フォーム要素までバブルしません。 input要素にリスナーを付ける必要があります。

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

+0

だから、仕様の一部が何を意味し、彼らはフォームが送信されると、無効なイベントが無効である各フォームコントロールで焼成し、その後にされている」と言うとき、フォーム要素自体 " フォーム自体に' invalid'イベントがいつ起きるのですか? –

+0

バブリングされたイベントではありません。しかし、あなたはそれを聞くために "キャプチャ"を使用することができます。私の更新された答えを見てください。 –

+0

それについて知りませんでした!大いに感謝する –

関連する問題