作成するフォームはユーザーを対象としています。 ユーザーはさまざまなデバイスを使用します。 マウス、タッチデバイス、キーボードなどを 目の動きで制御される装置です。 スクリーン リーダーを使用する人、小さい画面を使用する人、テキスト拡大ソフトウェアを使用する人などさまざまです。 全員がフォームを使用したいと考えています。フォームを誰でもアクセスできて使えるようにする方法を学びます。
ユーザーがフォーム項目の目的を理解できるようにする
さまざまなフォーム コントロールから選択できます。
それらすべてに共通しているものは何ですか?
すべてのフォーム コントロールに <label> 要素が関連付けられている必要があります。
<label> 要素は、フォーム コントロールの目的を記述します。
<label> テキストはフォーム コントロールと視覚的に関連付けられ、スクリーン リーダーによって読み上げられます。
また、<label> をタップまたはクリックすると、関連するフォーム コントロールがフォーカスされます。
標的を拡大しています
わかりやすい HTML を使用して、組み込みのブラウザ機能にアクセスする
理論上は、<div> 要素のみを使用してフォームを作成できます。
ネイティブの <form> のように表示することもできます。
どのような問題がありますか?
非セマンティックな要素でしょうか。
組み込みのフォーム要素には、多くの組み込み機能が用意されています。例を見てみましょう。
視覚的には、<input>(この例の最初のもの)と <div> は同じに見えます。
<div> にはタグがあるため、両方にテキストを挿入することもできます。
contenteditable 属性。
ただし、適切な <input> 要素を使用することと <div> を使用することの間には、多くの違いがあります。
<input> のように表示されます。
スクリーン リーダーのユーザーが <div> を入力要素として認識しません。
フォームに入力できないことを示しています。
スクリーン リーダーのユーザーには「名前」のみ読み上げられますが、
その要素がテキストを追加するためのフォーム コントロールであることは示されていません。
<div>Name</div> をクリックしても、それに関連する <div> はフォーカスされませんが、<label> と
<input> は for 属性と id 属性を使用して接続されます。
フォームを送信した後、<div>に入力されたデータはリクエストに含まれません。
JavaScript でデータを添付することもできますが、
デフォルトでは、<input> がそれを行います。
組み込みのフォーム要素には他の機能があります。
たとえば、適切なフォーム要素と適切な inputmode または type を使用すると、次のようになります。
画面キーボードに適切な文字が表示される。<div> での inputmode 属性の使用
できません。
想定されるデータ形式をユーザーが認識できるようにする
フォーム コントロールにさまざまな検証ルールを定義できます。
たとえば、フォームのフィールドには常に 8 文字以上が必要なとします。
minlength 属性を使用して、ブラウザに検証ルールを指定します。
ユーザーも検証ルールについて認識できるようにするには、どうすればよいですか。伝える。
フォーム コントロールのすぐ下に、想定される形式に関する情報を追加します。
補助デバイスについてわかりやすく説明すると
フォーム コントロールの aria-describedby 属性を使用する
両方を接続するには、同じ値を持つエラー メッセージに id を追加します。
ユーザーがフォーム コントロールのエラー メッセージを見つけられるようにサポートする
検証に関する前のモジュールでは、 データ入力が無効な場合にエラー メッセージを表示する方法を学びました。
<label for="name">Name</label>
<input type="text" name="name" id="name" required>
たとえば、フィールドに required 属性があり、無効なデータが入力された場合、ブラウザには
フォームの送信時に、フォーム コントロールの横にエラー メッセージが表示されます。スクリーン リーダーもエラー メッセージを読み上げます。
独自のエラー メッセージを定義することもできます。
この例では、エラー メッセージをフォーム コントロールに接続するために、さらに変更が必要です。
シンプルなアプローチは、aria-describedby を使用することです。
エラー メッセージ要素の id と一致するフォーム コントロールの属性です。
次に、aria-live="assertive" を使用してエラー メッセージを確認します。
ARIA のライブリージョンでは、エラーが表示されたときにスクリーン リーダーのユーザーにエラーが通知されます。
複数のフィールドがあるフォームでの
この方法の問題は
aria-live は通常、複数のエラーが発生した場合に最初のエラーのみを通知します。
同じアクションに対する複数の aria-live の通知に関するこの記事で説明されているように、すべてのエラーを連結して 1 つのメッセージを作成できます。もう 1 つの方法は、エラーがあることをアナウンスし、フィールドがフォーカスされたときに個々のエラーをアナウンスすることです。
ユーザーがエラーを認識できるようにする
無効な状態を赤色にすることもあります
:invalid 疑似クラスを使用します。
ただし、エラーや成功を伝えるには、
色のみに頼らないでください
赤緑失明の人にとって
緑と赤の枠線はほぼ同じに見えます。
メッセージがエラーに関連しているかどうかを判断できません。
色に加えてアイコンを使用するか、エラー メッセージの先頭にエラータイプを付加します。
<span class="error">
<strong>Error:</strong>Please use at least eight characters.
</span>
フォーム内の移動をサポートする
CSS を使って、フォーム コントロールの視覚的な順序を変更できます。 視覚的な順序とキーボード ナビゲーション(DOM の順序)の乖離 スクリーン リーダーとキーボードのユーザーにとって問題となります。
詳しくは、 ページ上の表示順序は DOM の順序に従います。
現在フォーカスされているフォーム コントロールをユーザーが特定できるようにする
キーボードを使用して移動します
こちらのフォームにご記入ください。
フォーム コントロールが有効になると、そのスタイルが変化したことをご存じですか。
これがデフォルトのフォーカス スタイルです。
代わりに
:focus CSS 疑似クラス。
:focus 内で使用するスタイルが何であれ、
デフォルトの状態とフォーカス状態の視覚的な違いを常に認識できるようにしてください。
詳細: フォーカス インジケーターの設計をご覧ください。
フォームが使用可能であることを確認する
さまざまなデバイスでフォームに入力することで、多くの一般的な問題を特定できます。 キーボードのみを使用し、スクリーン リーダー( NVDA(Windows) VoiceOver)、 またはページを 200% に拡大します。 フォームは必ずさまざまなプラットフォームでテストし、 毎日使用しないデバイスや設定は特に重要です。 スクリーン リーダーを使用している方はいらっしゃいますか。 文字拡大ソフトウェアを使用している場合は、フォームへの記入を依頼します。 ユーザー補助の審査は有益ですが、実際のユーザーによるテストはさらに効果的です。
詳しくは、 ユーザー補助機能の審査 実際のユーザーでテストする方法について学びます。