Mary miała mały kształt, a jej pola były tak oznaczone.
Ilekroć wkradał się błąd, siał zamieszanie.
Mam etykietę dla każdego pola wejściowego ... dość standardowa sprawa. Po sprawdzeniu formularza, na górze formularza wyświetlam pomocny mały akapit z wyszczególnieniem brakujących lub niepoprawnych informacji.
Czy mogę mieć dwie etykiety dla tego samego pola wejściowego? Jeden w prawidłowej formie, a drugi w tekście przypomnienia o walidacji? Czy jest jakiś powód, dla którego nie powinienem tego robić?
label
. Możesz nawet pominąć atrybutyfor
iid
. Specyfikacja nazywa to niejawny stowarzyszenie.Odpowiedzi:
Zakładam, że to pytanie dotyczy formularzy HTML. Ze specyfikacji :
W ten sposób do każdej kontrolki formularza można odwoływać się za pomocą wielu etykiet, ale każda etykieta może odwoływać się tylko do jednej kontrolki. Jeśli więc sensowne jest posiadanie drugiej etykiety dla elementu sterującego (aw opisanej sytuacji ma), możesz dodać drugą etykietę.
źródło
Kod HTML jest legalny i działa (kliknięcie dowolnej etykiety spowoduje przeniesienie fokusu na dane pole).
Jest to trochę trudniejsze ze względu na dostępność.
Nie jest to „powszechne” podejście iz tego powodu co najmniej jeden wspólny czytnik ekranu (testowałem z NVDA) odczytuje tylko pierwszą etykietę po przeniesieniu fokusu na pole - ignoruje wszelkie dodatkowe etykiety dla tego samego pola.
Jeśli więc Twój komunikat o błędzie znajduje się na górze strony, niewidomy lub niedowidzący użytkownik przeglądający pola w oknie usłyszy tylko komunikat o błędzie, gdy trafi do danego pola, a nie „rzeczywistą” etykietę obok niego.
W związku z tym - jeśli poprawnie sformułujesz komunikat o błędzie, może to być dobra rzecz (z pewnością lepsza niż po prostu zaznaczenie pola nie weryfikującego na czerwono!).
źródło
Tak, możesz mieć wiele etykiet wskazujących tę samą kontrolkę formularza. Jest to całkowicie legalne :
<label for="fname">First name</label> <label for="fname">Enter your info</label> <label for="fname">Why not a third label</label> <input type="text" id="fname" name="fname">
To tylko przykład ... normalnie owinąłbyś te wiersze jedną etykietą, ponieważ są blisko.
źródło
LABEL
może być powiązany z tą samą kontrolką, tworząc wiele odniesień za pomocąfor
atrybutu”.