ラジオボタンで「ラベル」を使用する


136

ラジオボタンで「ラベルの」パラメータを使用する場合、508準拠 *となるため、次の点は正しいですか?

 <label for="button one"><input type="radio" name="group1" id="r1" value="1" /> button one</label> 

それともこれ?

 <input type="radio" name="group1" id="r1" value="1" /><label for="button one"> button one</label>

私が尋ねる理由は、2番目の例では、「ラベル」はテキストのみを含み、実際のラジオボタンは含まないということです。

* 1973年のリハビリテーション法の第508条では、連邦政府機関が障害を持つ人々にソフトウェアとWebサイトのアクセシビリティを提供することを義務付けています。

回答:


216

もうすぐだ。それはこれでなければなりません:

<input type="radio" name="group1" id="r1" value="1" />
<label for="r1"> button one</label>

の値forは、ラベルを付ける要素のIDである必要があります。


4
あなたの答えはもちろん本当ですが、マーサは正しい答えを持っています。Marthaの例はどちらも完全に有効なHTML5です。また、たとえば、全体をフレームに収めたい場合は、CSSを使用して2番目のスタイルを設定する方が簡単です。ラベルを別の場所にしたい場合は、最初にラベルを付けます。しかし、どちらも大丈夫です。宜しくお願いします!
Jacek Kowalewski、2014

5
うーん.. 1つのラベルを2つのラジオボタン間で切り替えるにはどうすればよいですか。2つの同一のIDは使用できません...:/
Nils Sens

1
@NilsSens各ラジオとラベルのペアには一意のIDが必要です。IDを共有してはなりません
Daniel Waters

@NilsSens 2つのラジオボタンを切り替え、ラベルは1つだけですか?代わりにチェックボックスを使用するのは明らかなケースのようです:D
T_D

ああ、ラジオボタンを切り替えるスーパーラベルが1つだけだったわけではありません。好きなもの:カテゴリfavourite-fruitをクリックすると、idk "banana"と "strawberry"が切り替わります。なぜなら、オプションを切り替えるだけでよいのに、なぜマウスの動きをUXに強制するのでしょうか。今日、私はJSを使用してそれを手作業でコーディングしますが、CSSのみの方法があるかどうかを知るのは興味深いでしょう:)
Nils Sens

85

どちらの構造も有効でアクセス可能ですが、for属性はid入力要素のと同じである必要があります。

<input type="radio" ... id="r1" /><label for="r1">button text</label>

または

<label for="r1"><input type="radio" ... id="r1" />button text</label>

このfor属性は2番目のバージョン(入力を含むラベル)ではオプションですが、IIRCでは、含まれていない限り、ラベルテキストをクリック可能にしない古いブラウザーがいくつかありました。最初のバージョン(入力後のラベル)は、隣接する兄弟セレクターを使用してCSSでスタイルを設定する方が簡単です+

input[type="radio"]:checked+label {font-weight:bold;}

9
真、ただし2番目の例では「for」属性は必須ではありません。
イシュマエル

4
「for」属性を使用した場合にのみボタンのテキストを「クリック可能」にするブラウザバージョンがあったと思います。つまり、入力をラベル内にラップするだけでは不十分でした。
Martha、

@Martha-どのブラウザを知っていますか?
カークランド2013

2
@Kirkland - w3.org/TR/html401/interact/forms.html#h-17.9は、二番目の形式が有効であることを示していると思われるが、いくつかのソースは、サポートが普遍的ではないかもしれない示しています。forいずれにせよ、属性を提供することがおそらく最善です。
イシュマエル2013

1
@RalphDavidAbernathyはい、同じルールがチェックボックスに適用されます。
イシュマエル2016年

0

(最初に説明した他の回答読んfor<label></label>まあ。タグを、両方のトップの答えは正しいですが、私の挑戦のために、それはあなたがいくつかのラジオボックスを持っているとき、あなたは彼らのために選択するべきだった共通名を同じようname="r1" で異なるIDを持ちます id="r1_1" ... id="r1_2"

したがって、この方法で答えがより明確になり、名前とIDの間の競合も削除されます。

ラジオボックスのオプションごとに異なるIDが必要です。

<input type="radio" name="r1" id="r1_1" />

       <label for="r1_1">button text one</label>
       <br/>
       <input type="radio" name="r1" id="r1_2" />

       <label for="r1_2">button text two</label>
       <br/>
       <input type="radio" name="r1" id="r1_3" />

       <label for="r1_3">button text three</label>

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.