バリデーション付きフォームで、HTML標準の制約検証APIを使って送信前にエラー表示を行う正しい手順はどれですか?
- 送信ボタンのtypeをbuttonにして何もしない
- form.checkValidity()で判定し、reportValidity()またはカスタムメッセージを表示する
- alert(“OK”)だけ出す
- サーバーからのエラーのみを待つ
正解
- form.checkValidity()で判定し、reportValidity()またはカスタムメッセージを表示する
解説
ネイティブの制約検証API(required, pattern, minlength等)を利用し、checkValidity()で真偽を取り、必要ならreportValidity()やsetCustomValidity()でユーザーにフィードバックします。
使用例(サンプルコード)
[ html ]
<form id="f">
<input name="email" type="email" required>
<button>Send</button>
</form>
<script>
const form = document.getElementById('f');
form.addEventListener('submit', (e)=>{
if (!form.checkValidity()) {
e.preventDefault();
form.reportValidity();
}
});
</script>