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

ボタンに名前がなく、数を入力できない数量ステッパー

数量を変える−と+が名前のないアイコンボタンで、間の数字はただの文字だったり、数量欄のキー入力をスクリプトが止めていたりするため、スクリーンリーダーでは「ボタン」としか聞こえず、欲しい数を誰も入力できません。

WCAG 2.2
SC 4.1.2ASC 2.1.1A
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり <button type="button" class="step"><svg>…</svg></button>
アクセシビリティの問題を示した図: 全盲:どっちが増やすボタン?
01

問題

スクリーンリーダーの利用者にはどちらのボタンでマグが増えて、どちらで減るのかが分からず、誰も数量を入力できません。欄のキーが止められていると、キーボードの利用者は数量をまったく変えられません。

02

試してみる

マウスを使わずに数量を4にしてください。Tabでステッパーへ移動し、4と入力するか、ボタンや上矢印キーを使います。

下の欄に、スクリーンリーダーの読み上げが出ます。問題1では、2つのボタンは何と読まれますか?数字は入力できますか?問題2では、4と入力するか上矢印キーを押してから、マウスで欄の小さな矢印をクリックしてみてください。

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

ホーローマグ $18

数量
1

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

(Tabでステッパーへ移動)

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

03

修正方法

−と+に何をするかを表す名前を付け、数量を、入力と矢印キーを受け付けるラベル付きの数値の入力欄にします。

  1. 1ステッパーの各ボタンに、何をするかを言葉で表す名前がある。
  2. 2数量は、入力できるラベル付きの欄である。
  3. 3数値の入力欄が受け付けるキーを、スクリプトが取り消さない。
修正前

表示されただけの数字を挟む、名前のないアイコンボタン

<form class="buy" action="/basket" method="post">  <span class="qty-label">数量</span>  <div class="stepper">    <button type="button" class="step" data-step="-1">      <svg class="icon" viewBox="0 0 16 16">…</svg>    </button>    <span class="qty">1</span>    <button type="button" class="step" data-step="1">      <svg class="icon" viewBox="0 0 16 16">…</svg>    </button>  </div>  <input type="hidden" name="quantity" value="1">  <button type="submit">カートに入れる</button></form>
修正後

数値の入力欄を挟む、名前の付いたボタン

<form class="buy" action="/basket" method="post">  <label for="qty" class="qty-label">数量</label>  <div class="stepper">    <button type="button" class="step" data-step="-1">      <svg class="icon" viewBox="0 0 16 16" aria-hidden="true">…</svg>      <span class="visually-hidden">数量を減らす</span>    </button>    <input id="qty" name="quantity" type="number" min="1" max="10" value="1">    <button type="button" class="step" data-step="1">      <svg class="icon" viewBox="0 0 16 16" aria-hidden="true">…</svg>      <span class="visually-hidden">数量を増やす</span>    </button>  </div>  <button type="submit">カートに入れる</button></form>

AI コーディングアシスタントで修正しますか? このガイドを Markdown で取得、または全ガイドをコーディングエージェントで使う。

04

デザインの案

軽やかで今風のステッパーでも、読み上げられ、入力できます。

マグの数量を4通りに描きました。それぞれをクリックしてから、マウスを使わずにTabで移動してみてください。3つはキーボードで設定でき、読み上げで何の部品かが分かります。1つはポインターにしか反応しません。

デザインファイルで

  • 各ボタンの横に名前を書く。たとえば「数量を減らす」「数量を増やす」、ごみ箱なら「削除」。
  • 数字は入力できる欄として描き、カーソルとフォーカスの枠が付いた状態も描く。
  • デザインに表示しない場合も、数量に「数量」というラベルを付ける。
  • 最小と最大の数量でのステッパーも描き、どちらのボタンも残しておく。

合格

  • 真ん中の数字を入力できる1つのピル −、数字、+を、高さ46pxの1つのピルにまとめました。ピルは#f1f3f5の淡い灰色で、#8a929cの縁(白に対して3.15:1)があり、ボタンはその中の白い円です。数字は自分の枠を持たない入力欄で、クリックかTabでカーソルが入り、ピル全体にフォーカスの枠が付きます。
  • ホーローマグ $18
    1のときは−の代わりにごみ箱 カートの行で、数量が1のときは−がごみ箱に変わり、同じ場所で商品を削除できます。名前もアイコンと一緒に「数量を減らす」から「ホーローマグを削除」に変わり、商品の代わりに表示される行で「元に戻す」を選べます。
  • 数量のドロップダウン 大手のショップによくある、紺の縁のピルに「数量 1」と表示する形です。見た目を整えてあるだけで、中身はブラウザー自身のドロップダウンです。タップでシステムの一覧が開き、Tabで移動して矢印キーで選べ、ラベルと値が読み上げられます。上限が小さい場合に向いています。10個ほどを超えるなら、長い一覧より入力のほうが速くなります。

不合格

  • 数量 1
    数字の横に重ねた小さな矢印WCAG 2.1.1 小さくまとまったカウンターです。枠の中の数字の横に上下の矢印が重なっていますが、矢印はクリックにしか反応しないアイコンです。Tabでは素通りし、入力もできず、スクリーンリーダーには操作できる部品が見つからないため、ポインターがなければ数は1のままです。
05

修正の確認

マウスを使わない5つの確認

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

5件中0件を確認済み

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

制限

このサンプルは、どのアプリケーションでも同じ結果になることを保証するものではありません。数値の入力欄の役割はスクリーンリーダーによって呼び方が異なり、ラベルより先に数を読むものもあります。人数、泊数、時刻を設定するステッパーも同じ作り方ですが、サイズのように言葉を順に切り替えるステッパーは別の部品で、selectやラジオボタンのグループを使います。トラックの上を動かす部品ならドラッグでしか動かない範囲スライダーを、ヘッダーの検索やメニューのような、ページのほかの場所のアイコンボタンなら名前がないアイコンだけのボタンを参照してください。対象とする支援技術で、商品ページからカートまでの操作全体を確認してください。

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

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

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

再テストの進め方