Zastanawiam się, jaka jest różnica między następującymi dwoma fragmentami kodu:
<label>Input here : </label>
<input type='text' name='theinput' id='theinput'/>
i
<label for='theinput'>Input here : </label>
<input type='text' name='theinput' id='theinput'/>
Jestem pewien, że robi coś, gdy używasz specjalnej biblioteki JavaScript, ale poza tym, czy weryfikuje HTML lub jest wymagany z innego powodu?
select
opcją tylko skupia się na zaznaczeniu, zamiast rozszerzać opcje.for
Atrybut łączy etykietę za pomocą elementu sterującego, zgodnie z opisemlabel
w HTML 4.01 spec. Oznacza to, między innymi, że kiedylabel
element otrzymuje fokus (np. Przez kliknięcie), przenosi fokus na swoją powiązaną kontrolę. Powiązanie między etykietą a kontrolką może być również używane przez oparte na mowie programy użytkownika, co może dać użytkownikowi możliwość pytania, czym jest powiązana etykieta, podczas obsługi kontrolki. (Powiązanie może nie być tak oczywiste jak w renderowaniu wizualnym).W pierwszym przykładzie pytania (bez
for
) użycielabel
znaczników nie ma logicznej ani funkcjonalnej implikacji - jest bezużyteczne, chyba że zrobisz coś w CSS lub JavaScript.Specyfikacje HTML nie nakładają obowiązku kojarzenia etykiet z kontrolkami, ale robią to Wytyczne dotyczące dostępności treści WWW (WCAG) 2.0. Jest to opisane w dokumencie technicznym H44: Używanie elementów etykiet do kojarzenia etykiet tekstowych z kontrolkami formularzy , co wyjaśnia również, że niejawne powiązanie (poprzez zagnieżdżanie np.
input
Wewnątrzlabel
) nie jest tak szeroko obsługiwane, jak jawne powiązanie poprzezfor
iid
atrybuty,źródło
Krótko mówiąc, odnosi się do
id
danych wejściowych, to wszystko:źródło
Atrybut
<label>
tagu powinien być równy atrybutowi id powiązanego elementu, aby połączyć je ze sobą.źródło
Atrybut for pokazuje, że ta etykieta oznacza powiązane pole wejściowe lub pole wyboru, przycisk radiowy lub inne powiązane z nim pole wprowadzania danych. na przykład
źródło
Etykietuje wszelkie dane wejściowe parametru dla
for
atrybutu.źródło