Використання "label for" на радіо кнопок


136

Якщо ви користуєтесь параметром "label for" на перемикачах, щоб відповідати 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>

Причину, яку я прошу, полягає в тому, що у другому прикладі "мітка" охоплює лише текст, а не власне перемикач.

* Розділ 508 Закону про реабілітацію 1973 року вимагає від федеральних відомств забезпечувати програмне забезпечення та доступність веб-сайтів для людей з обмеженими можливостями.

Відповіді:


216

Ви майже отримали це. Це має бути так:

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

Значення в forмає бути ідентифікатором елемента, який ви маркуєте.


4
Ви відповідаєте, звичайно, правда, але Марта має правильну відповідь. Обидва приклади Марти є абсолютно правильним HTML5. Наприклад, якщо ви хочете, щоб вся справа була у кадрі, простіше стилізувати другу за допомогою css. Якщо ви хочете, щоб етикетки були десь в іншому місці, спочатку. Але з обома в порядку. З найкращими побажаннями!
Яцек Ковалевський

5
Хм .. Як зробити одну мітку перемиканням між двома перемикачами? У вас не може бути двох однакових ідентифікаторів ...: /
Nils Sens

1
@NilsSens Кожна пара радіо та ярликів повинна мати унікальні ідентифікатори, на які вони ніколи не повинні ділитися ідентифікаторами
Daniel Waters

@NilsSens Перемикатися між двома перемикачами, і вони мають лише одну мітку? Це звучить як явний випадок, щоб замість цього використовувати прапорець: D
T_D

Ах, ні, що я мав на увазі, була одна супер етикетка, яка перемикає радіо кнопки. Як: Категорія "Улюблені-фрукти", і коли ви клацаєте на неї, ви перемикаєтесь між idk "банан" і "полуниця" Тому, навіщо застосовувати рух миші UX, коли ви можете просто переключати параметри. Сьогодні я використовую JS, щоб просто передати його кодом, але було б цікаво знати, чи є лише CSS: :)
Nils Sens

86

Будь-яка структура є дійсною та доступною, але 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Атрибут є необов'язковим , у другому варіанті (етикетка , що містить вхід), але IIRC там були деякі старі браузери , які не роблять текст етикетки клікабельним , якщо ви не включили його. Першу версію (мітка після введення) простіше в стилі CSS, використовуючи сусідній селектор вибору +:

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

9
Щоправда, хоча у другому прикладі атрибут "для" не обов'язковий.
Ізмаїл

4
Я думаю, що були деякі версії браузера, які лише зробили текст кнопки "натисканням", якщо ви використовували атрибут "для", тобто обертання вводу всередині мітки було недостатньо.
Марта

@Martha - Ви знаєте, які браузери?
Кіркленд

2
@Kirkland - w3.org/TR/html401/interact/forms.html#h-17.9, схоже, вказує на те, що друга форма є дійсною, але кілька джерел вказують, що підтримка не може бути універсальною. Напевно, найкраще надати forатрибут у будь-якому випадку.
Ізмаїл

1
@RalphDavidAbernathy Так, ті ж правила застосовуються і до прапорців.
Ізмаїл

0

(Спочатку прочитайте інші відповіді, які пояснили forв <label></label>тегах. Ну, обидва відповіді вершини є правильними, але для моєї проблеми це було, коли у вас є декілька радіосигналів, ви повинні вибрати для них загальну назву, як, name="r1" але з різними ідентифікаторами id="r1_1" ... id="r1_2"

Таким чином, відповідь більш чітка, а також усуває конфлікти між ім'ям та ідентифікаторами.

Вам потрібні різні ідентифікатори для різних варіантів радіосигналу.

<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>

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.