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

入力欄の名前を明確にするには、labelのforとinputのidを一致させます。idは文書内での識別、nameは送信時の項目名で、同じ役割ではありません。近くに文字を置いただけでは、入力欄との関連付けにならない点に注意します。

ラベルをクリックして確認する

次のコードをHTML文書のbodyへ入れて開き、「Name」をクリックします。対応する入力欄にフォーカスが移れば、明示的な関連付けが機能しています。

<form method="get">
  <label for="visitor-name">Name</label>
  <input id="visitor-name" name="name" type="text">
  <button type="submit">Check</button>
</form>

idは文書内で一意にします。重複すると別の欄を対象にする場合があります。Tabでも入力欄へ移動し、フォーカスの位置が見えるか確認してください。ラベルは装飾ではなく入力欄の名前であり、支援技術がどの欄か識別するためにも重要です。

idとnameの役割を分ける

例ではvisitor-nameがラベルの参照先、name="name"が送信時のキーです。クリックしても反応しないときはforとid、入力できるのに値が送られないときはnameを調べます。

IDをperson-nameへ変えるならforも同時に変えます。一方、サーバーが同じキーを期待するならnameは変えなくても構いません。送信される一覧の確認はFormDataを使う実習で行えます。

関連付けが切れた例を修正する

最初の断片はforがIDではなくnameと一致する誤りです。修正例ではperson-nameへ対応させます。二つは別のファイルで試してください。同じ文書へまとめるとIDが重複し、比較条件が崩れます。

<!-- Incorrect: for matches name instead of id -->
<label for="full_name">Name</label>
<input id="person-name" name="full_name">
<!-- Correct: for matches the input id -->
<label for="person-name">Name</label>
<input id="person-name" name="full_name">

修正後にラベルをクリックして正しい欄へ移動するかを確認し、送信時のキーはfull_nameのままかも比較します。見た目が同じでも、構造的な関連付けが違うことを確かめる実習です。

placeholderはラベルの代わりにしない

placeholderは未入力時の短い例やヒントです。入力すると消えるため、項目名や重要な条件の唯一の表示にしません。

<label for="email">Email address</label>
<input id="email" name="email" type="email"
       placeholder="name@example.com">

ラベルを残し、補足が必要なら入力中も読める説明を近くに置きます。フォームに案内文を付ける方法ではaria-describedbyで説明と関連付ける例も扱います。構文と関連付けの詳細はMDNのlabel要素で確認できます。

같은 카테고리의 다른 글
HTML講座 / formの構造とGET・POSTによる送信

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

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

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

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

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

HTML講座 / 複数ページで小さなWebサイトを作る

HTML講座 / 複数ページで小さなWebサイトを作る

ホーム・紹介・問い合わせ練習の三ページを作り、共通メニューと現在位置を設定します。フォームは送信値の確認用とし、相対リンク、入力制約、キーボード、文法を点検します。

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

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

必須入力、文字数、数値の範囲と刻み、メール形式の制約を学びます。境界値を試し、ブラウザーの案内とサーバー側の検証を分けて考える方法も説明します。

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

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

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

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

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

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

HTML講座 / HTMLとは何か、Webページでの役割を理解する

HTML講座 / HTMLとは何か、Webページでの役割を理解する

HTMLで文書の意味と構造を表す方法を、CSS・JavaScriptとの違いとともに学びます。実際にHTMLファイルを保存して、ブラウザーで確認する手順も紹介します。

HTML講座 / img・alt・画像サイズを指定する

HTML講座 / img・alt・画像サイズを指定する

imgのsrc、alt、width、heightの役割を学びます。画像の配置場所と相対パス、装飾画像の代替テキスト、表示幅とファイル容量の違いも説明します。

HTML講座 / HTML文書の基本構造

HTML講座 / HTML文書の基本構造

doctype、html、head、bodyの役割と、文字コード・文書タイトル・viewportの設定を解説します。ファイルの保存から表示確認、表示されない場合の調べ方まで学べます。

HTML講座 / メール・数値・日付・選択肢に合うinputの型

HTML講座 / メール・数値・日付・選択肢に合うinputの型

email、number、date、checkbox、radioの使い分けを学びます。見える入力UIと送信値、初期値と現在値の違いを、フォームデータの確認とともに説明します。