A form input that lets the browser validate email syntax automatically and pops up an email‑optimized keyboard on mobile devices.
<input>
要素の type
属性に email
を指定すると、ブラウザは「メールアドレス専用」の入力欄として扱います。
この指定だけで――
HTML
<label for="userEmail">メールアドレス:</label>
<input id="userEmail" name="email" type="email" required autocomplete="email">
type="email"
でブラウザがメール形式を自動判定required
で未入力をブロックautocomplete="email"
で端末の候補を活用invalid
イベントでカスタムメッセージを設定し、ユーザーに具体的な入力指示を出すと UX が向上する。pattern=".+@example\.com"
。inputmode="email"
で @ や . 付きレイアウトが出現し、入力効率が向上。autocomplete="email"
とし、同一フォームで username
/email
を正しく組み合わせると多段フォームでも入力がスムーズになる。<datalist>
と組み合わせ、定型メールアドレス候補をプルダウン表示。name
属性は入力欄に名前を付ける属性ですが、form
要素でデータが送信される際、name
属性で指定した名前と、入力された値が一組になって送信されます。value
属性を指定する場合には、その値には妥当なメールアドレス(もし、multiple
属性を指定している場合には、半角カンマ( ,
)区切りの妥当なメールアドレスのリスト)を指定する必要があります。width: 30ch;
や clamp()
)で置き換えることを推奨。ValidityState.typeMismatch
が true
invalid
で任意の処理をフックJavaScript
const emailInput = document.querySelector('#userEmail');
emailInput.addEventListener('invalid', e => {
e.target.setCustomValidity('正しいメールアドレスを入力してください。');
});
emailInput.addEventListener('input', e => {
e.target.setCustomValidity('');
});