Choices.js формирует поверх стандартных <select> и
<input> кастомный UI-компонент, при этом сохраняя
семантическую связь с нативными элементами формы. Основой доступности
выступает автоматическая генерация ARIA-атрибутов и ролей,
обеспечивающих корректное взаимодействие со скринридерами.
Ключевые механизмы:
role="combobox" для поля вводаaria-expanded для отражения состояния
раскрытия спискаaria-controlsoptionaria-selectedChoices.js не требует ручного задания ARIA в типовых сценариях, но поведение может модифицироваться через конфигурационные параметры, влияющие на текстовые и поведенческие аспекты доступности.
Многие параметры Choices.js не относятся напрямую к ARIA, но формируют текстовый слой, который считывается экранными дикторами.
Определяет начальный текст поля выбора.
placeholderValue: 'Выберите значение'
Роль:
Текст внутри поля поиска при включенном поиске.
searchPlaceholderValue: 'Поиск...'
Роль:
Сообщение при отсутствии результатов поиска.
noResultsText: 'Совпадений не найдено'
Роль:
Сообщение при отсутствии доступных элементов.
noChoicesText: 'Нет доступных вариантов'
Роль:
Текст состояния загрузки при асинхронной подгрузке данных.
loadingText: 'Загрузка...'
Роль:
Подсказка для выбора элемента в списке.
itemSelectText: 'Нажмите для выбора'
Роль:
Сообщение при попытке добавить дублирующий элемент.
uniqueItemText: 'Значение уже добавлено'
Роль:
Текст для добавления пользовательского значения.
customAddItemText: 'Добавить "{value}"'
Роль:
Choices.js обеспечивает полноценную клавиатурную доступность без дополнительной настройки.
Основные механизмы:
ArrowDown / ArrowUp — навигация по
спискуEnter — выбор активного элементаEscape — закрытие выпадающего спискаBackspace — удаление выбранного элемента (в режиме
multiple)Tab — переход к следующему полю формыКонфигурационные параметры, влияющие на поведение:
removeItemButton — добавляет интерактивную кнопку
удаления, доступную с клавиатурыsearchEnabled — включает фокусируемое поле поискаshouldSort — влияет на порядок навигации по
элементамsearchEnabled: true
Включает отдельное поле поиска внутри выпадающего списка.
Влияние на доступность:
removeItemButton: true
Добавляет кнопку удаления выбранного элемента.
Аспекты доступности:
editItems: false
При включении позволяет редактировать выбранные элементы.
Влияние:
Choices.js отображает несколько системных состояний, каждое из которых должно быть корректно интерпретируемо вспомогательными технологиями.
placeholderValuearia-expanded="true/false"noChoicesTextnoResultsTextВ режиме multiple: true доступность усложняется из-за
появления списка выбранных элементов.
Особенности:
Конфигурационные параметры:
removeItemButton: true,
duplicateItemsAllowed: false,
maxItemCount: 5
Влияние на доступность:
Choices.js сохраняет нативную форму <select> или
<input>, скрывая её визуально, но оставляя в DOM.
Аспекты:
for /
idПараметры, влияющие на семантику:
name — определяет ключ в формеid — связывает label и контролclassNames — не влияет на доступность напрямую, но
может влиять на визуальное восприятие фокусаХотя classNames не относится напрямую к ARIA, он
критичен для визуального восприятия доступности.
Пример:
classNames: {
containerOuter: 'choices',
input: 'choices__input',
itemSelectable: 'choices__item--selectable',
itemDisabled: 'choices__item--disabled'
}
Роль:
При использовании async-источников данных важны параметры, определяющие текстовые переходные состояния:
loadingTextnoResultsTextnoChoicesTextДополнительно важно поддерживать корректное обновление ARIA-состояний:
aria-busyChoices.js использует текстовые сообщения для отражения ограничений:
Связанные параметры:
maxItemText: 'Максимум элементов достигнут',
uniqueItemText: 'Значение уже существует',
addItemFilter: null
Эти значения формируют доступный слой обратной связи, критичный для скринридеров, так как ошибки не выражаются через стандартные HTML-валидации.
Choices.js объединяет три уровня:
Комбинация параметров управления текстом, фокусом и интерактивностью формирует полную модель доступности, в которой каждое состояние интерфейса имеет явное описание и предсказуемое поведение для вспомогательных технологий.