Выбор элементов в Choices.js определяется совокупностью параметров, управляющих тем, как данные отображаются, как пользователь взаимодействует с пунктами списка и какие ограничения накладываются на процесс выбора. Внутренняя модель библиотеки строится вокруг унифицированного представления элемента, содержащего минимум три ключевых свойства: значение, отображаемый текст и состояние (выбран/не выбран/заблокирован).
Каждый элемент списка в Choices.js описывается объектом с фиксированной структурой:
value — уникальный идентификатор элементаlabel — отображаемый текстselected — состояние выбораdisabled — недоступность для выбораЭта структура определяет поведение всех параметров, связанных с
выбором. При инициализации данные могут передаваться через массив
choices, где каждый объект приводится к этой модели. От
корректности этих полей зависит возможность корректного выбора,
фильтрации и отображения состояния.
Поведение выбора определяется типом исходного HTML-элемента
(select-one или select-multiple) и
конфигурацией экземпляра.
В режиме одиночного выбора библиотека обеспечивает:
В режиме множественного выбора:
Ключевое значение имеет параметр removeItemButton,
который активирует визуальный элемент удаления для каждого выбранного
пункта.
Контроль объема выбора осуществляется через параметры:
maxItemCountОпределяет максимальное количество элементов, которые могут быть выбраны одновременно. После достижения лимита:
maxItemTextФормирует текст уведомления при попытке превышения лимита. Поддерживает шаблонные переменные, позволяя динамически отображать текущее состояние выбора.
maxItemCountTextРасширяет поведение предыдущего параметра, предоставляя более гибкую настройку отображаемого сообщения при превышении лимита.
Эти параметры напрямую влияют на логику взаимодействия: выбор перестает быть свободным и подчиняется заданному ограничению.
Удаление элементов является ключевой частью механики выбора в множественном режиме.
removeItemButtonВключает отображение кнопки удаления для каждого выбранного элемента. При активированном параметре интерфейс становится интерактивным на уровне каждого выбранного токена.
removeItemsОпределяет возможность полного удаления выбранных элементов. При отключении параметра выбранные значения становятся фиксированными.
При удалении элемента:
maxItemCount)closeDropdownOnSelectКонтролирует, будет ли список закрываться после выбора элемента.
true — список закрывается после каждого выбораfalse — список остается открытым, позволяя
выполнять множественный выбор без дополнительных действийВ одиночном режиме параметр часто игнорируется, поскольку закрытие происходит автоматически.
shouldSortОпределяет, будет ли Choices.js сортировать элементы:
Сортировка влияет на восприятие логики выбора. При отключении
сохраняется исходный порядок массива choices, что критично
при работе с заранее структурированными наборами данных.
sorterПозволяет переопределить алгоритм сортировки. Используется для:
Хотя поиск не является прямым механизмом выбора, он определяет доступность элементов для взаимодействия.
searchEnabledВключает или отключает поиск внутри списка. При отключении выбор осуществляется только через прокрутку и визуальное сканирование.
searchChoicesОпределяет, учитываются ли уже выбранные элементы при поиске. При отключении выбранные элементы исключаются из результатов поиска, что снижает визуальный шум.
searchFloorЗадает минимальное количество символов для активации поиска. Влияет на момент появления фильтрации.
searchResultLimitОграничивает количество отображаемых результатов, влияя на скорость и удобство выбора при больших наборах данных.
fuseOptionsПозволяет управлять алгоритмом нечеткого поиска (через Fuse.js внутри Choices.js). Влияет на релевантность результатов и поведение сопоставления строк.
addItemsРазрешает добавление новых значений, не входящих в исходный список. Это превращает стандартный select в комбинированное поле выбора и ввода.
addItemFilterФункция фильтрации, определяющая допустимость добавляемых значений. Используется для:
duplicateItemsAllowedОпределяет возможность повторного добавления одинаковых значений. При отключении система проверяет существующие элементы перед добавлением нового.
Выбор в Choices.js зависит от корректного сопоставления
value и label.
value используется как ключ храненияlabel отображается пользователюvalueПри неправильной конфигурации возможны ситуации, когда визуально элементы различаются, но логически считаются одинаковыми.
itemSelectTextОпределяет текст подсказки при наведении на элемент. Косвенно влияет на выбор, так как формирует поведенческую подсказку интерфейса.
delimiterИспользуется для сериализации выбранных значений в строку. Влияет на представление результата выбора при интеграции с формами.
editItemsПозволяет редактировать уже выбранные элементы. При активной опции пользователь может изменять значения без удаления и повторного добавления.
Выбор также регулируется состоянием disabled у
элементов.
disabled: true полностью исключает элемент из
выбораЭто состояние может динамически изменяться через API Choices.js, что позволяет управлять доступностью элементов в реальном времени.
Некоторые параметры не управляют выбором напрямую, но влияют на его восприятие и логику:
placeholder и placeholderValue формируют
начальное состояние до выбораloadingText отображается при асинхронной загрузке
опций, временно блокируя выборclassNames позволяет изменять визуальное представление
выбранных элементов, что важно при сложных интерфейсахПри динамической загрузке элементов через API выбор может временно блокироваться до завершения загрузки. В этом состоянии:
После загрузки выбор восстанавливается с учетом новых данных и сохранением ранее выбранных значений, если они присутствуют в обновленном наборе.
Параметры выбора в Choices.js не работают изолированно. Их взаимодействие формирует итоговое поведение:
maxItemCount ограничивает addItemssearchEnabled влияет на доступность элементов для
выбораremoveItemButton изменяет модель удаления, влияя на
общее состояние выбранных значенийshouldSort может конфликтовать с предустановленным
порядком данныхduplicateItemsAllowed определяет стратегию добавления
новых значенийКомбинация этих параметров формирует итоговую логику выбора, которая может варьироваться от строго ограниченного селектора до гибкого поля ввода с динамическим набором значений