--- title: 'ARIA: form ロール' slug: Web/Accessibility/ARIA/Roles/Form_Role tags: - ARIA - ARIA Role - Accessibility translation_of: Web/Accessibility/ARIA/Roles/Form_Role ---
form
ランドマークロールは、HTML のフォームと同等の機能を提供するページ上の要素のグループを識別するために使用できます。
<div role="form" id="contact-info" aria-label="連絡先"> <!-- フォームのコンテンツ --> </div>
これは、ユーザーの連絡先を収集して保存するフォームです。
重要: 本当に正当な理由がない限り、HTML の {{htmlelement("form")}} 要素を使用してフォームのコントロールを格納するべきです。
form
ロールは、フォーム(form)を識別するためのランドマークです。 ランドマークは、支援技術によって使用され、文書の大きなセクションを迅速に識別してナビゲートすることができます。 form
ランドマークは、他の指名されたランドマークが適切でない場合(例えば、main
や search
)に、全体としてフォームを作成するために組み合わせるアイテムとオブジェクトのコレクションを含む領域を識別します。
{{htmlelement("form")}} 要素を使用すると、アクセス可能な名前がある場合、自動的にセクションに contentinfo
ロールと form
ランドマークを持つことを伝えます。 開発者は、ARIA を使用するよりも正しい意味論の HTML 要素を常に使用するべきです。
可能であれば、HTML の {{htmlelement("form")}} 要素を使用してください。 <form>
要素は、アクセス可能な名前(例えば、aria-labelledby
、aria-label
、または title
)がある場合、form
ランドマークを定義します。 ユーザーがフォームの目的を理解できるように、文書内の各フォームに固有のラベルを付けるようにしてください。 このラベルは、支援技術のユーザーだけでなく、すべてのユーザーに表示するべきです。 検索機能にフォームが使用されている場合は、form
ランドマークの代わりに search
ランドマークを使用します。
ページの領域を特定するには、role="form"
を使用します。 すべてのフォームのフィールドを識別するためにそれを使用しないでください。 <form>
の代わりに form
ランドマークを使用している場合でも、<button>
、<input>
、<select>
、<textarea>
などのネイティブな HTML フォームのコントロールを使用することをお勧めします。
ロールに固有のステートやプロパティはありません。
ロールに固有のキーボードインタラクションはありません。
onsubmit
<form>
以外のものは送信できませんので、{{domxref("XMLHTTPRequest")}} などの代替データ送信メカニズムを構築するには、JavaScript を使用する必要があります。<div role="form" id="send-comment" aria-label="コメントを追加"> <label for="username">ユーザー名</label> <input id="username" name="username" autocomplete="nickname" autocorrect="off" type="text"> <label for="email">電子メール</label> <input id="email" name="email" autocomplete="email" autocapitalize="off" autocorrect="off" spellcheck="false" type="text"> <label for="comment">コメント</label> <textarea id="comment" name="comment"></textarea> <input value="コメント" type="submit"> </div>
代わりに <form>
を使用することをお勧めします。
<form id="send-comment" aria-label="コメントを追加"> .... </form>
ランドマークロールは、文書のより大きな全体的なセクションを識別することを意図しています。 あまりにも多くのランドマークロールを使用すると、スクリーンリーダーで「ノイズ」が発生し、ページ全体のレイアウトを理解することが難しくなります。
すべてのフォーム要素(入力、テキスト領域、選択など)で role="form"
を宣言する必要はありません。 フォーム要素をラップする HTML 要素で宣言するべきです。 理想的には、{{htmlelement("form")}} 要素をラップ要素として使用し、role="form"
を宣言しないでください。
フォームを使用して検索する場合は、より専門化した role="search"
値を使用する必要があります。
それそれの {{htmlelement("form")}} 要素と form
ランドマークロールには、ラベルが必要です。 このラベルで、支援技術のユーザーがフォームの目的をすばやく理解することができます。
フォームにラベルを付けるには、2つの方法があります。 {{htmlelement("legend")}} 要素は、<form>
要素の直接の子孫として使用します。role="form"
の宣言を使用している場合、role="form"
が宣言されている要素に適用される aria-label を使用します。 理想的には、フォームにラベルを付けるには、<form>
と <legend>
のテクニックを使用します。
(訳注:<legend>
は <fieldset>
の最初の子でなければならないとある。)
<form>
要素の使用<form id="address"> <legend>あなたの住所を更新してください</legend> <!-- フォームのコンテンツ --> </form>
role="form"
の使用<div role="form" id="gift-cards" aria-label="ギフトカードを購入する"> <!-- フォームのコンテンツ --> </div>
スクリーンリーダーは、ランドマークロールの種類をアナウンスします。 このため、ラベルでランドマークが何であるかを説明する必要はありません。 例えば、aria-label="お問い合わせフォーム"
の role="form"
の宣言は、"form お問い合わせフォーム" として重複してアナウンスすることができます。
{{htmlelement("form")}} 要素を使用すると、自動的にセクションが form
ロールを持つことを伝えます。 可能であれば、<form>
を代わりに使用することをお勧めします。
ブラウザー拡張などの特定の技術は、ページ上に存在する全てのランドマークロールのリストを生成することができ、非スクリーンリーダーユーザーは文書の大きなセクションを素早く識別してナビゲートできます。
仕様 | 状態 |
---|---|
{{SpecName("ARIA","#form","ARIA Form Role")}} | {{Spec2('ARIA')}} |
{{SpecName("ARIA Authoring Practices","#aria_lh_form","Role Form")}} | {{Spec2('ARIA Authoring Practices')}} |
TBD