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講座 / detailsとsummaryで開閉できる説明を作る

HTML講座 / detailsとsummaryで開閉できる説明を作る

JavaScriptなしで開閉する補足説明を作ります。open属性の真偽、分かりやすいsummaryの書き方、Tab・Enter・Spaceによる操作の確認方法も紹介します。

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

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

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

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

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

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

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

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

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

HTML講座 / audio・video・iframeでメディアを埋め込む

HTML講座 / audio・video・iframeでメディアを埋め込む

音声、動画、外部文書の埋め込みを学びます。字幕ファイル、代替リンク、画面幅への対応と、ファイル形式や提供元の制限による読み込み失敗の確認方法も説明します。

HTML講座 / セマンティック要素でページの領域を分ける

HTML講座 / セマンティック要素でページの領域を分ける

header、nav、main、article、section、aside、footerの役割を学びます。見た目の配置と意味を区別し、複数のナビゲーションを識別する方法も紹介します。

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

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

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

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

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

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

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

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

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

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

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

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