フォーム要素にはラベルが必要です

ルールID: label
ルールセット: axe-core 4.10
ユーザーへの影響:
ガイドライン: WCAG 2.1 (A), WCAG 2.0 (A), WCAG 2.2 (A), Section 508, Trusted Tester, EN 301 549

Learn Web Accessibility

Subscribe to our extensive curriculum of online self-paced courses

Compliance Data & Impact

User Impact


Minor
Critical

Disabilities Affected

  • 盲目
  • 視力低下
  • 盲ろう者
  • 運動・器用さ

Standard(s)

  • WCAG 2.1 (A)
  • WCAG 2.0 (A)
  • WCAG 2.2 (A)
  • Section 508
  • Trusted Tester
  • EN 301 549

WCAG 達成基準 [WCAG 2.1 (A)]

  • 4.1.2: Name, Role, Value

WCAG 達成基準 [WCAG 2.0 (A)]

  • 4.1.2: Name, Role, Value

WCAG 達成基準 [WCAG 2.2 (A)]

  • 4.1.2: Name, Role, Value

Section 508 ガイドライン

  • 1194.22: Web based intranet and Internet Information & Applications
  • 1194.22 (n): When electronic forms are designed to be completed on-line, the form shall allow people using assistive technology to access the information, field elements, and functionality required for completion and submission of the form, including all directions and cues.

Trusted Tester 指南

  • 5.C: The combination of the accessible name, accessible description, and other programmatic associations (e.g., table column and/or row associations) describes each input field and includes all relevant instructions and cues (textual and graphical).

EN 301 549 指南

  • 9.4.1.2: Name, Role, Value

修正方法

プログラムによってすべてのフォーム コントロールにラベルを関連付けます。ほとんどの状況で推奨される方法は、 label 要素と、 for および id 属性を使用した明示的な関連付けを使用することです。ここでの例は、最も一般的な許容可能な解決策から、最も一般的でない許容可能な解決策の順に並べられています。

<label for="firstname">First name:</label> <input type="text" id="firstname">

入力の周囲に 要素をラップすることで、ラベルを 暗黙的に <label> 使用することもできます。

<label>First name: <input type="text"></label>

入力が、検索送信ボタンの虫眼鏡アイコンなど、他の方法ですでに視覚的にラベル付けされている場合は、 aria-label を使用して、スクリーン リーダーが読み取るための目に見えないテキスト ラベルを作成することが許容される可能性があります。

<input type="text" aria-label="Search">

別の方法としては、 <label> タグを追加すると機能やスタイルが壊れる場合や、複数のラベルが同じ入力に適用される場合に時々使用されますが、代わりに aria-labelledby を使用します。

<div id="firstname">First name:</div> <input type="text" aria-labelledby="firstname">
<!--visual labels may be elsewhere in the content, such as in table headers-->
<div id="temperature">Temperature:</div>
<div id="high">High:</div>
<div id="low">Low:</div>
<!-- the inputs -->
<input type="text" aria-labelledby="temperature low">
<input type="text" aria-labelledby="temperature high">

最後に、 placeholder a属性を使用して、テキスト入力にアクセス可能な名前を付けることができます。これは 推奨されない解決策です 。ユーザーが入力にテキストを入力すると、視覚的なラベル (プレースホルダー テキスト) が削除され、入力の目的がわからなくなるためです。

<input type="text" placeholder="Search">

また、すべての id 要素が各ページで一意であること、およびラベル テキストがスクリーンリーダーで聞いている人にとって理解できるものであることを確認します。

ラベルが必要なフォーム要素

  • テキスト入力フィールド、例: <input type="text"><input type="password"> および <textarea>
  • ラジオボタン、 <input type="radio">
  • チェックボックス、 <input type="checkbox">

この要件の唯一の例外は次のとおりです。

  • ボタン - ボタンは自己ラベリング機能があります
  • 非表示の入力 - type属性値がhiddenの入力 (例: type="hidden")。これらの入力は非表示になっており、ユーザーが入力することはできません。したがって、それらにはラベルは必要ありません。

ラベルを追加するときは、次の点に注意してください。

First name: <input type="text" name="fname">

このマークアップはレンダリングされ、横に「名前:」という単語が入ったテキスト ボックスを生成します。視覚に障害のないユーザーは、テキストを入力フィールドに関連付けるのに問題はありません。ただし、フォームが長く複雑になるにつれて、この接続は視覚障害のあるユーザーにとって明確ではなくなります。この曖昧さにより、特に必要な情報が名前よりも複雑な場合に、エラーが発生する可能性が高くなります。

これらのさまざまなラベル付け方法を実装する方法の詳細な手順については、このルールの一部として実行される自動チェックを参照してください。

最後に、各 input 要素にラベルが1つだけあることを確認してください。いずれかの input 要素にヘルプ テキストがある場合は、このテキストが label 要素のテキストと異なることを確認してください。

なぜ重要なのか

フォームをアクセス可能にするには、効果的なフォーム ラベルが必要です。チェックボックス、ラジオボタン、入力フィールドなどのフォーム要素の目的は、フォーム要素がプログラムでラベル付けされていない場合でも、視覚のあるユーザーには明らかであることが多いです。スクリーン リーダーのユーザーには、フォーム フィールドを識別するための便利なフォーム ラベルが必要です。すべてのフォーム要素にラベルを追加すると、曖昧さがなくなり、よりアクセスしやすい製品が実現します。

フォーム要素のラベルがない場合、スクリーン リーダーのユーザーは入力データの期待値を把握できません。スクリーン リーダーは、ラベル関係が確立されていない (またはラベルとして機能する冗長テキストがない) と、入力オブジェクトに関する情報をプログラムで判別できません。

ラベルがないと、スクリーン リーダーで読み取られるときにフィールドがフォーカスを受け取ることができず、運動制御が不完全なユーザーは、ラベルをクリックすることでコントロールがアクティブになるという、より大きなクリック可能領域の利点を享受できません。

ルールの説明

各フォーム要素には、プログラム的に関連付けられたラベル要素が必要です。

仕組みについて (簡単に言うと)

すべてのフォーム要素にプログラム的に関連付けられたラベルがあることを確認します。

リソース

axe 4.10 ルールの一覧 を参照する

この情報は役に立ちましたか?

すでにフィードバックをいただきました、ありがとうございます。.

あなたの回答は次のとおりです。

この情報は役に立ちましたか?
フィードバックが提出された日付/時刻: