Как исправить ошибку «отсутствует метка формы» в выборе материала в пользовательском интерфейсе с помощью инструмента Chrome WAVE

#material-ui #accessibility

#материал-пользовательский интерфейс #Специальные возможности

Вопрос:

Я использую material UI Select, и мы используем chrome WAVE tool для устранения проблем с ADA. При выборе материала в пользовательском интерфейсе появляется ошибка «Отсутствует метка формы», как показано на скриншоте ниже. Кто-нибудь может помочь мне решить эту проблему. Заранее спасибо.

инструмент wave: https://chrome.google.com/webstore/detail/wave-evaluation-tool/jbbplnpkjmmeebjpijfedlgcdilocofh

код:

 import React from 'react';
import { makeStyles } from '@material-ui/core/styles';
import InputLabel from '@material-ui/core/InputLabel';
import MenuItem from '@material-ui/core/MenuItem';
import FormHelperText from '@material-ui/core/FormHelperText';
import FormControl from '@material-ui/core/FormControl';
import Select from '@material-ui/core/Select';

const useStyles = makeStyles((theme) => ({
formControl: {
margin: theme.spacing(1),
minWidth: 120,
},
selectEmpty: {
marginTop: theme.spacing(2),
},
}));

export default function SimpleSelect() {
const classes = useStyles();
const [age, setAge] = React.useState('');

 const handleChange = (event) => {
 setAge(event.target.value);
 };

  return (
  <div>
  <FormControl className={classes.formControl}>
    <InputLabel id="demo-simple-select-label">Age</InputLabel>
    <Select
      labelId="demo-simple-select-label"
      id="demo-simple-select"
      value={age}
      onChange={handleChange}
    >
      <MenuItem value={10}>Ten</MenuItem>
      <MenuItem value={20}>Twenty</MenuItem>
      <MenuItem value={30}>Thirty</MenuItem>
    </Select>
  </FormControl>
  </div>
 );
  }
 

скриншот: введите описание изображения здесь

Ответ №1:

Ошибка говорит о том, что входной элемент, который, кстати, есть aria-hidden="true" , не имеет метки.

Я думаю, что это проблема, аналогичная той, о которой сообщалось о TablePagination, отвеченной здесь, и о TextareaAutosize, обсуждаемой здесь . Элемент всегда скрыт для программ чтения с экрана, а поведение выбора реализовано с помощью javascript.

Плагин WAVE сообщает об ошибке, потому что они предпочитают сообщать больше, чем меньше, в случае, если скрытый элемент отображается в какой-то момент, как они объясняют здесь .

Ответ №2:

Я нашел для этого одно решение. Просто добавьте htmlFor="demo-simple-select-placeholder-label" InputLabel тег, чтобы исправить ошибку «отсутствующая метка формы».

Комментарии:

1. Это не работает в апреле 2022 года, что добавляет дополнительную ошибку WAVE Orphaned form label

Ответ №3:

Я смог убрать предупреждение, добавив htmlFor={'input-id'} к InputLabel , и добавив inputProps={{id: 'input-id'}} к Select .