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

キーボードで打ち間違いを直せないワンタイムコードの入力欄

ワンタイムコードの入力欄がキーを離すたびにフォーカスを次の欄へ送るため、Shift + Tabで戻ってもすぐ先へ送り返されてしまい、打ち間違えた数字にキーボードで戻れない

WCAG 2.2
SC 2.1.1A
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり box.addEventListener('keyup', …)
アクセシビリティの問題を示した図: 手の操作:この7、どう直すの?
01

問題

キーボード、スイッチ、スクリーンリーダーの利用者は、1桁打ち間違えるとその桁に戻れず、正しいコードを送れない

02

試してみる

4、8、7と打ってから、キーボードだけで7を1に直してみましょう

Backspace、左矢印キー、Shift+Tabを試してください。下に、キーごとのフォーカスの移り先が、途中で通った欄も含めて表示されます。

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

問題キーを離すと次の欄へ移る欄

ご本人の確認

スマートフォンに送った6桁のコードを入力してください

最後のキー:まだありません

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

03

修正方法

数字が入ったときだけ次の欄へ移るか、コードを1つの欄で受け取る

  1. 1次の欄へ移るのは数字が入ったときだけにし、キーごとには移らない
  2. 2打った数字のどれにもキーボードで戻れ、上から打ち直せるようにする
  3. 3デザインが許すなら、コードは1つの欄で求める
修正前 キーを離すと次の欄へ移る欄
<p id="code-label">Enter the 6-digit code we sent to your phone</p><div class="code-boxes" role="group" aria-labelledby="code-label">  <input name="code-1" inputmode="numeric" maxlength="1" aria-label="Digit 1 of 6">  <input name="code-2" inputmode="numeric" maxlength="1" aria-label="Digit 2 of 6">  <input name="code-3" inputmode="numeric" maxlength="1" aria-label="Digit 3 of 6">  <input name="code-4" inputmode="numeric" maxlength="1" aria-label="Digit 4 of 6">  <input name="code-5" inputmode="numeric" maxlength="1" aria-label="Digit 5 of 6">  <input name="code-6" inputmode="numeric" maxlength="1" aria-label="Digit 6 of 6"></div><button type="submit">Continue</button>
修正後

コード全体を受け取る1つの欄

<label for="code">Security code</label><p id="code-hint">Enter the 6-digit code we sent to your phone.</p><input id="code" name="code" type="text" inputmode="numeric"  autocomplete="one-time-code" spellcheck="false" aria-describedby="code-hint"><button type="submit">Continue</button>

この方法を選ぶ理由:まずHTMLの要素を使う

04

修正の確認

4項目

確認方法: キーボード、スクリーンリーダー、マウス

4件中0件を確認済み

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

制限

このサンプルは、どのコードの入力でも同じ結果になることを保証するものではありません。例はログイン用のコードです。PIN、ギフトカードの番号、予約番号などを欄に分けて求める場合も、同じように確かめてください。コード全体の貼り付けは、貼り付けられないワンタイムコードの入力欄で扱っています。input でない要素で作った欄は、すべてのキーをスクリプトで加える必要があり、スクリーンリーダーが入力欄として扱わないこともあります。このガイドでは、そのコードは扱いません。利用者が頼るキーボード、スイッチ、スクリーンリーダーで、ログイン全体を確認してください。

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

EaseWebのサービス

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

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

サービス内容を見る