Архитектура фронтенда
Доступные формы: тест с выбором ответа
Шесть вопросов, охватывающих весь юнит. Каждый отражает решение, которое вы принимаете на реальном ревью формы, — не определение для пересказа, а выбор между формой, которая работает для всех, и формой, которая работает только с мышью.
Убедитесь, что вы связываете воедино связь label, озвучивание ошибок, focus management, нативную семантику и constraint validation — тот синтез, к которому вёл урок.
Поле показывает свою подпись только как placeholder. Коллега утверждает, что это нормально, ведь текст виден. Почему это всё равно нарушение WCAG?
Кастомная JS-валидация на submit находит три невалидных поля. Команда красит их в красный и прокручивает к первому. Пользователь клавиатуры/screen reader всё равно ничего не слышит. Какой главный пропущенный шаг?
Вы добавили div с role=button и обработчиком клика, стилизованный точно по дизайну. Пользователь клавиатуры сообщает, что кнопка не работает. Что забыли помимо role?
Вы вставляете сообщение об ошибке в div с role=alert в том же рендере, где этот div впервые монтируется. Зрячие видят его; многие пользователи screen reader ничего не слышат. Почему?
Форма полагается полностью на нативную constraint validation (required, type=email, pattern). Затем команда добавляет e.preventDefault() ради кастомных сообщений и асинхронных проверок. Какую ответственность они только что унаследовали?
Дизайну нужен стилизованный дропдаун, который нативный select не повторяет визуально. Какая реализация — выбор по умолчанию для senior, и почему?
Сквозная линия — одно дерево решений: каждому контролу нужно программно связанное имя (настоящий label, а не placeholder); ошибки должны жить в уже существующем live-регионе и быть привязаны к полю через aria-invalid + aria-describedby; на неудачном submit нужно переместить фокус на первое невалидное поле, а не просто прокрутить; нативные элементы несут role, фокусируемость и обработку клавиатуры, которые нельзя полностью воспроизвести; и как только вы делаете preventDefault, вы наследуете ответственность за фокус и озвучивание, которую браузер брал на себя бесплатно. К виджетам на ARIA обращайтесь в последнюю очередь и только когда нативный элемент действительно не справляется.