2017-10-09 4 views
4

私は<label>を使用して入力をラップして、成功とエラーメッセージがラベルの中に表示されるようにします。このシナリオでもっともセマンティックなマークアップは何だと思いますか?ラベル内に意味入力エラーメッセージがあります

<label> 
    <b>Username</b> 
    <input> 
    <strong>Username already taken :(</strong> 
</label> 

エラーの場合は、strongが適切ですか?またはspanが良いですか? role=statusは適切ですか?

+1

(ラベルではない)ラベルのテキストにスパンを使用でき、現在のスクリーンリーダーでstrong/span/em/i/bは何も変更されません。 (これらの要素のうちの1つが他のものよりも優れたセマンティクスを持つかもしれませんが、SRはセマンティクスからは遠いHTMLマークアップの現在の状態に対処しなければなりません^^) – FelipeAls

答えて

6

The WCAG provides an exampleのいずれも、aria-invalidaria-describedbyのプロパティを使用して表示しています。あなたの例では

、コードは次のようになります。

<label> 
    <b>Username</b> 
    <input aria-invalid="true" aria-describedby="error"> 
    <strong id="error">Username already taken :(</strong> 
</label> 

strongことが重要予告のように見えるとして適切です。 ロール(statusではなく)は、#errorエレメントaccording to the W3Cに適用する方が適切です。

+0

Thanks =) '[aria-describedby] '

+1

@ryanve 'aria-describedby'は、' aria-labelledby'とは異なる通常のラベルセマンティクスには影響しません。しかし、 'label'の内部に'強い 'があるという事実は、その内容をラベルテキストに追加する効果を持つかもしれないというのは事実です。 'label'タグの外側に' strong'タグを置くことは、ラベル( 'label'または' aria-labelledby')と記述( 'aria-describedby')を区別するので' aria-describedby'を使うときに関係します。 – Adam

+0

深く掘り下げたあと、さらに具体的な 'aria-errormessage'属性があることが分かりました。https://www.w3.org/TR/wai-aria/states_and_properties#aria-errormessage – ryanve

2

強力なタグを使用するのが適切です。

強いタグは重要な意味を持ち、パスワードは間違っていることが重要です。これは、ユーザーが処理をブロックするためです。

2

技術的には、両方の要素を使用して、探している適切なエラーメッセージを適切なCSSで作成することができます。最も意味のあるのは、私の考えでは、正式には、パスワードの重要性を強調したいと思うので、強いタグを使用することです。font-weight:bold;をCSSで使用する必要はありません。

また、アクセシビリティの問題が関係するため、Strongタグはスクリーンリーダーにとって優れているため、アクセシビリティがより使いやすくなります。

全体的には、このシナリオでは<strong><span>より速く、簡単に、使いやすくすると思います。

2

"Username is already taken"は、カジュアルなものではなく、深刻な通知です。

1

私は強いタグ を保ち、エラーとして表示するにはCSS赤色を使用することをお勧めします。

関連する問題