本文へスキップ

エラーサマリ

送信すると先頭に「3 件の入力に問題があります」が現れてフォーカスが移り、各項目へのリンクで飛べる。項目側は aria-invalid と aria-describedby で理由が読まれる。

プレビュー

入力

操作実際に入力して試せます。

デザインの要点

  • エラーはフォームの先頭に集め、見出しへフォーカスを移す。項目ごとの赤字だけでは、読み上げでは何が起きたか分からない
  • サマリの各行はその項目へのリンクにする。長いフォームで3つ目のエラーまで自力で辿らせない
  • 項目には aria-invalid="true" と、エラー文を指す aria-describedby を付ける。赤枠は読まれない
  • エラー文は「何をどう直すか」を書く。「不正な値です」は原因も直し方も伝えない

プロのサイトでの実例

実例は「型の使われ方」の観察であり、コード・ロゴの転載ではありません。サイト側の更新で見え方が変わることがあります。

コード(コピーして使えます)

<form class="fes-form" id="fes-form" novalidate>
  <div class="fes-summary" id="fes-summary" tabindex="-1" hidden>
    <h2 id="fes-sum-title">3 件の入力に問題があります</h2>
    <ul id="fes-sum-list"></ul>
  </div>
  <div class="fes-field">
    <label for="fes-name">お名前 <span class="fes-req">必須</span></label>
    <input id="fes-name" type="text" autocomplete="off">
    <p class="fes-err" id="fes-name-err" hidden></p>
  </div>
  <div class="fes-field">
    <label for="fes-email">メールアドレス <span class="fes-req">必須</span></label>
    <input id="fes-email" type="email" autocomplete="off" placeholder="name@example.com">
    <p class="fes-err" id="fes-email-err" hidden></p>
  </div>
  <div class="fes-field fes-check">
    <div class="fes-checkrow"><input id="fes-agree" type="checkbox"><label for="fes-agree">利用規約に同意する</label></div>
    <p class="fes-err" id="fes-agree-err" hidden></p>
  </div>
  <div class="fes-foot">
    <button type="submit" class="fes-submit">登録する</button>
    <span class="fes-reassure">登録後すぐに使えます。メールは確認用に1通だけ届きます</span>
  </div>
  <div class="fes-band"><span class="fes-tag">読み上げ</span><span id="fes-msg">空のまま「登録する」を押すと、サマリ見出しへフォーカスが移ります</span></div>
</form>

タグ

同じカテゴリ「アクセシブルUI」のほかのパーツ

関連パーツ