やりたいこと
フォームに入力された数字のバリデーションをしたいと思っています。
入力が不正な場合、submitされた時点でアラートを出し、
送信イベントをキャンセルしたいです。
現状
自分なりに調べて、addEventListener
とevent.preventDefault()
を使う方法でやってみました。
(外部ファイルに全て書きたかったので、HTMLのonsubmitに書き込む形は回避しました)
js
1document.getElementById("form").addEventListener("submit",function(){ 2 3 var date=document.getElementById("date"); 4 var myregex=new RegExp(/^[0-9]{6}$/); 5 6 if(date.value!=="" && date.value.match(myregex)===null){ 7 window.alert("日付は6桁の数字で入力してください。"); 8 event.preventDefault(); 9 } 10 11});
このようにしたところ、最初何度かは正常に動いた(送信イベントをキャンセルできた)ように思ったのですが、何回か実行するうちに、送信イベントがキャンセルされなくなりました。
アラートは出るのですが、そのまま送信されてしまいます。
どこがおかしいのでしょうか。
ご指導お願いいたします。
回答4件
あなたの回答
tips
プレビュー