form-control-single-label
Form controls must not have multiple labels
Checks that a form control is associated with at most one <label> (by wrapping or by label[for]).
Applies to. Applies to labelable form controls (input, excluding hidden/submit/reset/button/image; select; textarea).
Expectation. At most one <label> that can contribute to the control's accessible name is associated with it, by wrapping it, or by a <label for="..."> on its id (a label that both wraps and self-references via for counts once). Graded by whether the surplus labels actually compete for the name:
- PASS when an override (aria-labelledby / aria-label) supersedes every native <label>: the labels then contribute nothing to the name, so they cannot be ambiguous. A visible-label-vs-name mismatch is SC 2.5.3 Label in Name's concern, not this rule's.
- FAIL when two or more non-empty labels compete and there is no override: screen readers announce a non-deterministic subset.
- CANTTELL when one non-empty label is joined by empty label association(s) and there is no override: the name usually resolves to the real label, but handling of the empty association is not guaranteed across user agents.
All-empty associations with no override are a missing-name case (the sibling rule below), not an ambiguity, so this rule stays silent.
Examples
<label>Name <input type="text"></label>
A single wrapping label; only one labelling mechanism applies.
<label for="address">Address</label><label for="address">Mailing address</label><input id="address" type="text">
Two separate `label[for]` elements both target the same control.