HTML講座 / required・文字数・範囲で入力値を検証する

HTMLの入力検証は、未入力、文字数、数値範囲、一部の形式をブラウザーで確認する仕組みです。requiredやminlength、maxなどで利用者の入力を助けられますが、サーバー側の検証を置き換えるものではありません。

必須と文字数は別の条件

次のフォームでは必須入力と2〜20文字の条件を組み合わせます。requiredは値の有無、minlengthは利用者が入力した文字列の長さを確認します。一方を指定しただけでもう一方の条件まで満たすわけではありません。

<form method="get">
  <label for="nickname">Nickname (2–20 characters)</label>
  <input id="nickname" name="nickname" type="text"
         required minlength="2" maxlength="20">
  <button type="submit">Check</button>
</form>

空欄、1文字、2文字の順に入力して送信を比較してください。ブラウザーやOS、言語でエラーの文章は異なるので、入力前から条件も表示します。maxlengthは通常上限を超える入力を制限しますが、長さはUTF-16コード単位で数え、絵文字などで見た目の文字数と一致しない場合があります。スクリプトから設定した値も使うなら別に試します。MDNのmaxlengthに定義があります。

数値範囲と基本的な形式を確認する

minとmaxは範囲、stepは刻みを指定します。次のフォームを文書のbodyへ入れ、参加人数を手入力と増減ボタンの両方で操作します。

<form method="get">
  <label for="people">Participants (1–10)</label>
  <input id="people" name="people" type="number"
         min="1" max="10" step="1" required>
  <label for="email">Email address</label>
  <input id="email" name="email" type="email" required>
  <button type="submit">Check</button>
</form>

0、11、2.5などが欄に表示できても、有効な送信値とは限りません。メールにはname@example.comなどのテスト値を使います。type="email"は基本的な形式の確認であり、アドレスの実在を確認しません。この例のGETは現在の文書へ送る練習で、保存するサーバーは含みません。型の選択はinputの型で扱います。

直し方が分かる案内を付ける

赤色だけで誤りを示さず、「1〜10の整数を入力してください」のように修正条件を伝えます。重要な説明は入力中も見えるようにし、必要ならaria-describedbyを使う案内文で欄と対応させます。この属性だけで検証処理が作られるわけではありません。

独自のエラー表示を作る場合は、状態変化やフォーカスも実装して確認します。novalidateは送信時の標準の対話的な検証を省く指定なので、問題を見えなくするためだけに加えません。開発者ツールや直接要求でブラウザーの検証を回避できるため、重要な値はサーバー側でも検証します。MDNの制約検証に仕組みがまとめられています。

境界値と失敗条件を比べる

参加人数 条件 期待する結果
空欄 required 未入力として送信を止める
0 min="1" 下限未満
11 max="10" 上限超過
2.5 step="1" 刻みと不一致
2 数値の全条件 この数値欄は有効

メール欄を正しいテスト形式に保ち、他の欄のエラーが比較を邪魔しない条件で試します。この表は失敗の種類を示し、特定のエラーメッセージを保証するものではありません。参加人数が有効でも、別の欄が無効ならフォーム全体は送信できません。

実際の入力と操作を試す

必須欄を一つずつ空にし、各上限と下限のすぐ内側・外側を入力します。Tabで欄へ移動し、エラーを読んで戻り、修正して再送信できるか確認してください。比較したら再読み込みして初期状態へ戻します。独自のエラーUIを追加したときも、フォーカスとキーボードの確認を繰り返します。

같은 카테고리의 다른 글
HTML講座 / table・tr・th・tdで表を作る

HTML講座 / table・tr・th・tdで表を作る

行と列を持つデータをHTMLの表で表す基本を学びます。見出しセルとデータセル、theadとtbody、横幅が広い表のスクロール方法も紹介します。

HTML講座 / HTMLのエラーを探して文書を検査する

HTML講座 / HTMLのエラーを探して文書を検査する

Nu HTML Checkerの使い方と、重複IDを含む失敗例の修正を学びます。エラー位置の読み方、保存したファイルとサーバーの出力、構文と実際の操作の違いも解説します。

HTML講座 / labelとinputを正しく関連付ける

HTML講座 / labelとinputを正しく関連付ける

labelのforとinputのidを対応させる方法を学びます。idと送信時のnameの違い、重複IDの問題、placeholderがラベルの代わりにならない理由も説明します。

HTML講座 / figureとfigcaptionで図と説明をまとめる

HTML講座 / figureとfigcaptionで図と説明をまとめる

図とキャプションを一つのまとまりとして表す方法を学びます。altとキャプションの役割、出典の示し方、figureを使わなくてもよい場面も説明します。

HTML講座 / テキストの意味を表すem・strong・引用・コード

HTML講座 / テキストの意味を表すem・strong・引用・コード

emとstrong、qとblockquote、abbr、code、kbdの違いを学びます。太字や斜体という見た目ではなく、文章中の役割に合わせて要素を選ぶ方法を説明します。

HTML講座 / タイトル・説明・言語・文字コードを設定する

HTML講座 / タイトル・説明・言語・文字コードを設定する

title、meta description、charset、viewportとhtmlのlangを整理します。タブと本文の違い、文字化けの調査、検索結果の説明が必ず採用されるわけではない点も学べます。

HTML講座 / divとspanはいつ使うのか

HTML講座 / divとspanはいつ使うのか

divとspanの内容モデルと使い分けを学びます。CSSのdisplayを変えてもHTMLの親子関係の規則は変わらないことや、意味のある要素を優先する基準も説明します。

HTML講座 / ol・ul・dlと入れ子のリスト

HTML講座 / ol・ul・dlと入れ子のリスト

順序付きリスト、箇条書き、用語と説明のリストを使い分けます。番号の開始位置や逆順表示、リスト項目の中にサブリストを置く正しい構造も学びます。

HTML講座 / formの構造とGET・POSTによる送信

HTML講座 / formの構造とGET・POSTによる送信

action、method、nameの役割とGET・POSTの違いを学びます。FormDataと開発者ツールを使い、送信対象の値、入力検証、サーバー処理を分けて確認します。

HTML講座 / HTMLアクセシビリティの基本を確認する

HTML講座 / HTMLアクセシビリティの基本を確認する

見出し、リンク、画像、フォームを意味のあるHTMLで作る方法を学びます。スキップリンク、キーボード、フォーカス、ズームを確認する小さなページと、検査の限界も紹介します。