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

見つからず理由も分からない無効なボタン

注文ボタンは利用規約に同意するまで灰色ですが、クラスだけで無効に見せているため使えるボタンとして読み上げられるか、disabledで無効にしているためTabで飛ばされ、何が足りないのかがどこにも書かれていません。

WCAG 2.2
SC 4.1.2A
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり <button type="submit" disabled>注文する</button>
アクセシビリティの問題を示した図: Tabで飛ばされ、理由も分からない。
01

問題

キーボードやスクリーンリーダーの利用者は、灰色のボタンを使えるものとして聞くか、ボタンを見つけられず、まだ何をすればよいのかを誰にも伝えられません。

02

試してみる

Tabでチェックボックスから「注文する」へ移動し、チェックを入れる前にEnterを押してください。

ボタンに届きますか?足りないものを教えてくれるものはありますか?下の欄に、スクリーンリーダーの読み上げが出ます。

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

配送と返品

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

(Tabでフォームを移動)

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

03

修正方法

状態をコードで伝え、ボタンを見つけられる場所に残し、まだ何が必要かを文字で伝えます。

  1. 1フォーカスを受ける要素にdisabledかaria-disabledがないまま、部品を無効の見た目にしない。
  2. 2見つける必要があるボタンはTabの移動先に残す。押せるままにするか、aria-disabledを使う。
  3. 3足りないものは、ボタンのそばか、原因のそばのエラーとして、見える文字で伝える。
修正前

クラスで灰色にしたボタン

<label><input type="checkbox" name="terms"> 利用規約に同意する</label><button type="submit" class="btn is-disabled">注文する</button>
修正後

押せるままにして、押されたら説明するボタン

<label><input type="checkbox" name="terms" id="terms" aria-describedby="terms-error">  利用規約に同意する</label><p id="terms-error" class="error" hidden>利用規約に同意するにはチェックを入れてください。</p><button type="submit">注文する</button>

この方法を選ぶ理由:無効にせず、理由を伝える

AI コーディングアシスタントで修正しますか? このガイドを Markdown で取得

04

修正の確認

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

確認方法: キーボード、スクリーンリーダー、強制配色、ズーム

6件中0件を確認済み

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

制限

このサンプルは、どのフォームでも同じ結果になることを保証するものではありません。aria-disabled と disabled の読み上げ方(「使用不可」「淡色表示」「無効」)はスクリーンリーダーによって異なり、aria-describedby を少し間を置いてから、または求められたときにだけ読むものもあります。エラーの文言とページ上の位置は、フォームのほかの部分によって変わります。空のフォームから注文が終わるまでの操作全体を、利用者が使う支援技術で確認してください。

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

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

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

再テストの進め方