本文へ移動
easeweb
ご相談
トピックを検索

ラベルやヒントがツールチップにしかない入力欄

ギフトカードの欄の名前や桁数がtitle属性にしかなく、ブラウザーはマウスポインターを欄に重ねている間しか表示しません。

WCAG 2.2
SC 3.3.2A
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり title="ギフトカード番号"
アクセシビリティの問題を示した図: 手の操作:カード番号はどの欄?
01

問題

キーボードやタッチ操作の利用者には空の欄しか見えず、どれが何の欄か、何桁入れるのかを示す言葉がない

02

試してみる

Tabキーで各欄に移り、何を入力するか分かるか確かめてから、マウスを重ねてみましょう

  • 問題1: 画面には欄の名前がありません。フォームの下で、スクリーンリーダーに聞こえる言葉と、目に見える言葉を比べてください。スマートフォンでは欄をタップしてください。

  • 問題2: ラベルは表示されましたが、各欄の桁数はツールチップにしかありません。

  • 修正を適用します。 もう一度Tabキーで移動してください。スクリーンリーダーが読む言葉は、すべて画面にありますか?

問題あり 修正できますか?

ギフトカード

スクリーンリーダーの読み上げ:

(Tabで欄へ移動)

再現デモです。「問題あり」は意図的にアクセシブルでない状態にしています。

03

修正方法

ラベルと形式を画面に表示する。label要素か、aria-describedbyで結び付けたヒントを使う

  1. 1どの欄も、ラベルをtitleだけでなく画面に表示する。
  2. 2欄に必要な形式や指示も、ラベルの中かその横に表示する。
  3. 3画面に表示しない言葉をtitleに残さない。
修正前

Titleだけのラベル

<form class="gift-card">  <h2>ギフトカード</h2>  <input name="card" inputmode="numeric" title="ギフトカード番号">  <input name="pin" inputmode="numeric" title="PIN">  <button type="submit">適用</button></form>
修正後

ラベルと、その下のヒント

<form class="gift-card">  <h2>ギフトカード</h2>  <label for="card">ギフトカード番号</label>  <p id="card-hint" class="hint">16桁</p>  <input id="card" name="card" inputmode="numeric" aria-describedby="card-hint">  <label for="pin">PIN</label>  <p id="pin-hint" class="hint">4桁</p>  <input id="pin" name="pin" inputmode="numeric" aria-describedby="pin-hint">  <button type="submit">適用</button></form>

混同しやすいもの
04

デザインの案

形式の置き場所は自由。ただし入力する前から見えるように

ギフトカード番号が16桁であることを、4通りで示しました。Tabキーで各欄に移って数字をいくつか入力し、スマートフォンでも同じように試してみてください。2つは入力前から形式が見え、2つはポインターを重ねるか間違えるまで見えません。

デザインファイルで

  • 各欄を3通り:空、入力途中、入力済み。どれでも形式が画面に見えるように。
  • 形式は欄の中かすぐ横に置く。アイコンの裏だけに隠さない。
  • ヒントの色の横にコントラスト比を書く。この大きさの文字なら4.5:1以上。
  • 入力前に見せる形式と、エラーメッセージで同じ言葉を使う。

合格

  • 16桁
    欄の中に形式を示すピル 欄の端の淡いピルに「16桁」と書きます。#f1ede9の地に#4a4541で8.13:1です。何もしていないときから表示され、入力中も入力後も残り、欄の下に行を足す必要もありません。
  • 16桁中0桁
    入力に合わせて増える桁数 欄の右下に「16桁中0桁」を#5c5650(7.24:1)で表示し、入力に合わせて数が増えます。入力前から形式が見え、残りの桁数も分かります。読み上げは欄に移ったときで、キーを押すたびではありません。

不合格

  • 16桁
    ポインターを重ねると形式が出るⓘアイコンWCAG 3.3.2 ラベルの後の小さなⓘ(#5c5650、7.24:1)にポインターを重ねている間だけ、「16桁」と書いた濃い色のカードが開きます。Tabキーではアイコンに移れないため、キーボードで操作すると欄にはラベルしかありません。
  • 間違えた後にだけ出る形式WCAG 3.3.2 何もしていないときは、桁数について何も書かれていません。16桁に満たない数字を入れて欄を離れると、赤い「16桁すべて入力してください」(#b3261e、6.54:1)が出ます。決まりは最初からあるのに、画面に出るのは誰かが破った後です。
05

修正の確認

4項目、マウス不要

確認方法: キーボード、タッチ、スクリーンリーダー、拡大表示

4件中0件を確認済み

OS、ブラウザーと支援技術のバージョン、ビルド、実施日、各手順の実際の結果を記録してください。共通の入力欄コンポーネントを変更した際は、再度確認します。

スクリーンリーダーでの aria-describedby、title (no label)、title (with a label)の読まれ方

制限

このサンプルは、どのアプリケーションでも同じ結果になることを保証するものではありません。扱うのは、欄に入力するために必要なラベルと説明です。カードのどの番号がPINかのように、どこで情報を見つけるかを教えるヘルプは、レベルAAAの別のトピック「フォームで、説明が必要な入力欄のそばにヘルプがある」で扱いますが、まだガイドはありません。決済用のiframe、外部ウィジェット、コンテンツ編集者が追加した欄も、同じように確認してください。実際に使用する支援技術で、操作全体を確認してください。

よくある問題を再現した学習用のサンプルです。実在のクライアントの診断結果ではありません。コードは出発点となる実装例のため、実際の製品でも確認してください。ここでは支援技術でのテスト結果は報告していません。

コードを更新しても、使いやすさを保つために

ガイドの内容を、コーディングエージェントやCIで使える開発ルールにまとめます。更新後は、キーボードとスクリーンリーダーで再テストし、問題が再発していないか確認します。

再テストの進め方