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

ファイルを選ぶボタンがないドラッグ&ドロップのアップロード欄

経費申請フォームの領収書欄はドラッグ&ドロップか枠のクリックでしかファイルを受け付けず、Tabで届くものもボタンとして読まれるものもない

WCAG 2.2
SC 2.1.1ASC 2.5.7AA· 2.2 で追加SC 4.1.2A
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり zone.addEventListener('drop', dropFiles);
アクセシビリティの問題を示した図: 手の操作:領収書はどう添付するの?
01

問題

ドラッグできない人や、キーボードとスクリーンリーダーの利用者は領収書を添付できず、申請を送れない

02

試してみる

ファイルを枠へドラッグして、領収書を添付してみましょう。次に、マウスを使わずにTabでも試してみましょう

  • 問題1: フォームの下のファイルか、自分のパソコンのファイルを枠へドラッグします。次に「金額」からTabキーを押すと、フォーカスは「申請する」へ飛び、クリックでもキーでもファイルを追加できません。

  • 問題2: 枠をクリックすると、ファイル選択が開くようになりました。それでもTabキーは枠を通り過ぎ、押せるものがあることは、下の欄の読み上げに一度も出てきません。

  • 修正を適用します。 Tabキーが枠の中のコントロールで止まり、EnterキーかSpaceキーでファイル選択が開きます。ドロップもそのまま使えます。

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

パソコンのフォルダー:ファイルを枠へドラッグ taxi-receipt.pdfhotel-invoice.pdf

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

(Tabでフォームを移動してください)

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

03

修正方法

ドロップは残し、ファイルを選ぶボタンも置く

修正前

ドロップしか受け付けない枠

<div class="field">  <span class="field-label" id="receipts-label">領収書</span>  <div class="drop-zone">    <p>ここに領収書をドラッグ&ドロップ</p>  </div>  <ul class="file-list"></ul></div>
問題点3点
  • ファイルを入れる方法はドロップだけです。
  • 枠の中に、フォーカスできるものがありません。
  • クリックでもキーでも、ファイルを追加できません。
修正後

隠したinputを開く「ファイルを選択」ボタン

<div class="field">  <span class="field-label" id="receipts-label">領収書</span>  <div class="drop-zone">    <p>ここに領収書をドラッグ&ドロップ、または</p>    <button type="button" class="choose" aria-describedby="receipts-label">ファイルを選択</button>    <input type="file" id="receipts" multiple hidden>  </div>  <ul class="file-list"></ul></div>
修正の手順3ステップ
  1. 枠の中に、HTML標準の「ファイルを選択」ボタンを置きます。ブラウザーがTabの順序に入れ、EnterキーやSpaceキーで押せるようにし、ロールも付けます。
  2. 名前はボタン自身の文字にし、欄のラベルを説明にします。「ファイルを選択、ボタン、領収書」のように読まれます。
  3. inputを開くクリックを枠からボタンへ移し、枠の cursor: pointer を外します。1回のクリック、タップ、キー操作でファイル選択が開き、音声操作では「ファイルを選択をクリック」と言えます。

これで二つの修正前の例はどちらも直り、2.1.1、2.5.7、4.1.2を満たします。inputは hidden で隠したままです。現在のブラウザーでは、この状態でも click() でファイル選択が開き、必要な操作はすべてボタンでできます。ドロップはこれまでどおり使えます。

04

デザインの案

ファイルを落とす場所はどんな形でもよい。ボタンさえあれば

領収書を添付する場所を5通りに描きました。自分のパソコンのファイルをそれぞれにドラッグしてから、マウスを使わずにTabでも試してください。4つにはファイル選択を開くボタンがあり、1つはドロップでしかファイルを受け取りません。

デザインファイルで

  • ファイルを選ぶボタンを、言葉付きで、何もしていない状態から描く。ドロップを促す言葉だけにしない。
  • 添付する場所を、何もしていない状態と、ファイルを上に持ってきた状態の2通りで描く。
  • ボタンにフォーカスの枠を付けて描く。ファイルを追加した後の一覧も描き、各ファイルに「削除」ボタンを付ける。
  • スマートフォンのレイアウトも描く。ドラッグで入れられないため、ボタンがファイルを追加する唯一の方法になる。

合格

  • 領収書
    添付ボタンとファイルのチップ 枠はありません。クリップの付いた控えめな枠線のボタンだけで、追加したファイルはそれぞれ削除用の×付きのチップになります。欄のどこにファイルを落としても受け取るので、ドロップは近道として残り、フォームも小さいままです。ボタンの青い文字は白に対して6.09:1です。
  • ここに領収書をドロップ、または

    文の中の「参照」ボタン 破線のない淡い青の面で、文の中の1語がボタンです。「参照」に下線を引き、サイトの青の太字にしています。面の色に対して5.47:1です。クリックとTabで止まるのはこの語だけなので、フォーカスの枠も語にぴったり付きます。何を選ぶのかが分かる名前(「領収書を参照」など)にします。
  • 領収書

    まだ追加していません。

    ファイルを持ってきたときだけ現れる落とし先 何もしていないときは「領収書を追加」ボタンだけが見え、ファイルをドラッグしてきたときだけ、カード全体に青い縁と「ドロップして添付」の落とし先が重なります。画面は落ち着いたまま、落とし先はできるだけ大きく、ボタンの位置も変わりません。
  • 領収書
    • taxi.pdf
    • lunch.jpg
    追加済みの領収書の横に「領収書を追加」タイル 追加済みの領収書を小さな紙のタイルで並べ、最後のタイルを、プラスと「領収書を追加」の言葉が入った破線のタイルにします。このタイルがボタンなので、タップかEnterキーでファイル選択が開き、ファイルを落としても受け取ります。言葉は残してください。プラスだけでは、目に見えない名前が必要になります。

不合格

  • 領収書はまだありません このページのどこにでも領収書をドロップできます
    「どこにでもドロップ」とだけ書いた空の状態WCAG 2.5.7 親しみやすいイラストに「領収書はまだありません」と「このページのどこにでも領収書をドロップできます」。最もすっきりした空の状態で、ドロップも実際に使えます。しかし押せるものが何もないため、Tabでは何も見つからず、クリックしても何も起きず、ほとんどのスマートフォンでは領収書を追加する方法がまったくありません。
05

修正の確認

5項目

確認方法: キーボード、スクリーンリーダー、マウス、タッチ、音声入力

5件中0件を確認済み

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

スクリーンリーダーでの aria-describedbyの読まれ方

制限

このサンプルは、どのアプリケーションでも同じ結果になることを保証するものではありません。カードやリストの項目をドラッグで動かすことは「マウスでしか動かせないドラッグ&ドロップのボード」で、アップロードした写真の内容を尋ねることは「代替テキストを尋ねない画像のアップロード」で扱っています。大きなファイルのアップロードの進み具合を示す表示には別の配慮が必要です。「スクリーンリーダーで読めないプログレスバーとメーター」を参照してください。ファイルの貼り付けやフォルダーごとのアップロードは、ここでは扱いません。ファイル選択の画面はOSのもので、キー操作やスクリーンリーダーの対応はOSによって異なります。対象とする支援技術で、操作全体を確認してください。

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

EaseWebのサービス

修正した問題を、次のリリースで再発させない

このガイドのような修正方法を、コーディングエージェントが従うルールと、CIのチェックに組み込みます。あわせて定期的に、キーボードとスクリーンリーダーで手動の再テストを行います。

サービス内容を見る