Skip to content

Commit cdbff9b

Browse files
WilcoFiersJym77zlayaAvocado
authored
Non-role input types require an accessible name (#2228)
* Non-role input types require an accessible name * Update _rules/form-field-non-empty-accessible-name-e086e5.md Co-authored-by: Jean-Yves Moyen <jym@siteimprove.com> * Apply suggestions from code review Co-authored-by: Jean-Yves Moyen <jym@siteimprove.com> * Update form-field-non-empty-accessible-name-e086e5.md * update applicability * add examples --------- Co-authored-by: Jean-Yves Moyen <jym@siteimprove.com> Co-authored-by: Sasha Nichols <sasha.nichols@deque.com>
1 parent cab8ed8 commit cdbff9b

File tree

2 files changed

+53
-18
lines changed

2 files changed

+53
-18
lines changed

_rules/form-field-label-descriptive-cc0f0a.md

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -34,21 +34,12 @@ acknowledgments:
3434

3535
## Applicability
3636

37-
This rule applies to any [programmatic label][] of an element which has one of the following [semantic roles][semantic role]:
38-
39-
- `checkbox`
40-
- `combobox`
41-
- `listbox`
42-
- `menuitemcheckbox`
43-
- `menuitemradio`
44-
- `radio`
45-
- `searchbox`
46-
- `slider`
47-
- `spinbutton`
48-
- `switch`
49-
- `textbox`
50-
51-
and where both the element and the [programmatic label][] are [visible][].
37+
This rule applies to any [programmatic label][] of an element for which one of the following is true:
38+
39+
- the element has one of the following [semantic roles][semantic role]: `checkbox`, `combobox`, `listbox`, `menuitemcheckbox`, `menuitemradio`, `radio`, `searchbox`, `slider`, `spinbutton`, `switch`, `textbox`; or
40+
- the element is an `input` with no [semantic role][] and a `type` [attribute value][] of `color`, `date`, `datetime-local`, `file`, `month`, `password`, `time`, or `week`.
41+
42+
In addition, both the element and the [programmatic label][] must be [visible][].
5243

5344
## Expectation
5445

@@ -58,9 +49,11 @@ Each test target, together with its [visual context][], describes the purpose of
5849

5950
The list of applicable [semantic roles][semantic role] is derived by taking all the [ARIA 1.2][aria12] roles that:
6051

61-
- inherit from the `input`, `menuitem` or `select` role, and
52+
- inherit from the `input`, `menuitem` or `select` role; and
6253
- are form field controls (this notably excludes `menu`, `option` or `tree`).
6354

55+
This rule also applies to `input` elements whose `type` [attribute value][] is `color`, `date`, `datetime-local`, `file`, `month`, `password`, `time`, or `week`. These input types have no semantic role but still require a descriptive [programmatic label][] so users can understand their purpose.
56+
6457
[Labels][label] in WCAG are not restricted to the `label` element of HTML and can be any element. This rule is only concerned about actual `label` elements, and elements that are programmatically marked as [labels][label] via the `aria-labelledby` attribute.
6558

6659
It is possible for an element to have an [accessible name][] but still have a non-descriptive `label` element (and even a non-descriptive [label][]). In that case, it would pass [Success Criterion 4.1.2: Name, Role and Value][sc412] but still fail this rule and [Success Criterion 2.4.6: Headings and Labels][sc246].
@@ -160,6 +153,16 @@ Both the `div` and the `span` elements are [programmatic labels][programmatic la
160153
</html>
161154
```
162155

156+
#### Passed Example 7
157+
158+
The `label` element is a [programmatic label][] of the `input` element whose `type` attribute value is `date` and describes its purpose.
159+
160+
```html
161+
<html lang="en">
162+
<label>Date of birth:<input id="dob" type="date" name="dob"/></label>
163+
</html>
164+
```
165+
163166
### Failed
164167

165168
#### Failed Example 1
@@ -225,6 +228,16 @@ These `button` and `span` elements are both [programmatic labels][programmatic l
225228
</html>
226229
```
227230

231+
#### Failed Example 6
232+
233+
The `label` element is a [programmatic label][] of the `input` element whose `type` attribute value is `date`, but the label text "Info" does not describe the purpose of the form field.
234+
235+
```html
236+
<html lang="en">
237+
<label>Info:<input id="dob" type="date" name="dob"/></label>
238+
</html>
239+
```
240+
228241
### Inapplicable
229242

230243
#### Inapplicable Example 1

_rules/form-field-non-empty-accessible-name-e086e5.md

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@ acknowledgments:
2929

3030
## Applicability
3131

32-
This rule applies to any element that is [included in the accessibility tree](#included-in-the-accessibility-tree), and that has one of the following [semantic roles][]: `checkbox`, `combobox` (`select` elements), `listbox`, `menuitemcheckbox`, `menuitemradio`, `radio`, `searchbox`, `slider`, `spinbutton`, `switch`, `textbox`.
32+
This rule applies to any element that is [included in the accessibility tree](#included-in-the-accessibility-tree) and for which one of the following is true:
33+
34+
- the element has one of the following [semantic roles][]: `checkbox`, `combobox` (`select` elements), `listbox`, `menuitemcheckbox`, `menuitemradio`, `radio`, `searchbox`, `slider`, `spinbutton`, `switch`, `textbox`; or
35+
- the element is an `input` with no [semantic role][] and a `type` [attribute value][] of `color`, `date`, `datetime-local`, `file`, `month`, `password`, `time`, or `week`.
3336

3437
## Expectation
3538

@@ -42,7 +45,7 @@ The list of roles in the applicability is derived by taking all the roles from [
4245
- have [semantic roles][] that inherit from the `input`, `menuitem` or `select` role; and
4346
- are form field controls (this notably excludes `menu`, `option` or `tree`).
4447

45-
This rule does not test other control-like roles such as `button` and `menuitem`, because these do not inherit from `input` or `select`. These should be tested separately.
48+
This rule does not test other control-like roles such as `button` and `menuitem`, because these do not inherit from `input` or `select`; these should be tested separately. This rule tests explicitly input types such as date and color because they have no semantic role, but still require an accessible name.
4649

4750
This rule does not map to [3.3.2 Labels or Instructions](https://www.w3.org/TR/WCAG22/#labels-or-instructions) as there are sufficient techniques within 3.3.2 that don't need the elements to have an [accessible name][]. For example "[G131: Providing descriptive labels](https://www.w3.org/WAI/WCAG22/Techniques/general/G131)" **AND** "[G162: Positioning labels to maximize predictability of relationships](https://www.w3.org/WAI/WCAG22/Techniques/general/G162)" would be sufficient.
4851

@@ -152,6 +155,17 @@ These `menuitemcheckbox` elements have an [accessible name][] because its aria-l
152155
</div>
153156
```
154157

158+
#### Passed Example 9
159+
160+
This `input` element with a `type` [attribute value][] of `color` has an [accessible name][] because of its [programmatic label](#programmatic-label).
161+
162+
```html
163+
<label>
164+
Favorite color
165+
<input type="color" />
166+
</label>
167+
```
168+
155169
### Failed
156170

157171
#### Failed Example 1
@@ -230,6 +244,14 @@ These `menuitemcheckbox` elements do not have an [accessible name][].
230244
</div>
231245
```
232246

247+
#### Failed Example 9
248+
249+
This `input` element with a `type` [attribute value][] of `date` has an empty (`""`) [accessible name][].
250+
251+
```html
252+
<label>Date of birth</label> <input type="date" />
253+
```
254+
233255
### Inapplicable
234256

235257
#### Inapplicable Example 1

0 commit comments

Comments
 (0)