Placeholder в Choices.js используется для отображения вспомогательного текста внутри поля выбора до момента, пока пользователь не выбрал значение или не начал взаимодействие с компонентом. В зависимости от конфигурации, placeholder может применяться к одиночным селектам, мультиселектам, а также к строке поиска внутри выпадающего списка.
В Choices.js управление placeholder осуществляется через параметр
конфигурации placeholder и связанное с ним значение
placeholderValue.
Основные параметры:
placeholder: true — включает отображение
placeholderplaceholderValue: string — задаёт текст
placeholderПример инициализации:
const element = document.querySelector('#select');
const choices = new Choices(element, {
placeholder: true,
placeholderValue: 'Выберите значение'
});
При такой конфигурации до выбора элемента отображается текст «Выберите значение», заменяющий стандартное пустое состояние селекта.
В режиме одиночного выбора placeholder отображается как начальное состояние компонента. При выборе значения placeholder полностью заменяется выбранным элементом и не возвращается до очистки выбора.
Особенности поведения:
Дополнительно важен параметр allowHTML, влияющий на
интерпретацию содержимого placeholder, особенно при использовании
разметки.
const choices = new Choices('#select', {
placeholder: true,
placeholderValue: 'Выберите категорию',
allowHTML: false
});
В режиме множественного выбора placeholder ведёт себя иначе. Он отображается только тогда, когда не выбрано ни одного значения. После добавления первого элемента placeholder скрывается и больше не отображается, пока список выбранных значений не будет полностью очищен.
Пример конфигурации:
const choices = new Choices('#multi-select', {
placeholder: true,
placeholderValue: 'Выберите элементы',
removeItemButton: true
});
Поведение в мультиселекте:
В Choices.js существует отдельный placeholder для строки поиска
внутри выпадающего списка. Он задаётся через параметр
searchPlaceholderValue.
const choices = new Choices('#select', {
searchEnabled: true,
searchPlaceholderValue: 'Поиск...'
});
Особенности:
searchEnabledПри отключённом поиске параметр не оказывает влияния на интерфейс.
При одновременном использовании основного placeholder и placeholder для поиска формируются два независимых текстовых состояния интерфейса:
Пример:
const choices = new Choices('#select', {
placeholder: true,
placeholderValue: 'Выберите город',
searchEnabled: true,
searchPlaceholderValue: 'Введите название города'
});
При отключённом состоянии элемента (disabled: true)
placeholder может продолжать отображаться, однако взаимодействие с ним
блокируется.
const choices = new Choices('#select', {
placeholder: true,
placeholderValue: 'Нет доступных значений',
shouldSort: false,
searchEnabled: false
});
В таком режиме placeholder часто используется как индикатор отсутствия данных.
Choices.js не предоставляет прямого метода обновления placeholder после инициализации, однако изменение возможно через пересоздание экземпляра или модификацию внутренних свойств с последующим обновлением интерфейса.
Один из подходов — уничтожение и повторная инициализация:
choices.destroy();
const newChoices = new Choices('#select', {
placeholder: true,
placeholderValue: 'Новый текст placeholder'
});
Другой вариант — обновление через манипуляцию DOM-значением исходного элемента с последующим вызовом обновления:
element.setAttribute('placeholder', 'Новый текст');
choices.init();
При использовании объектов данных (label /
value) placeholder продолжает работать независимо от
структуры данных.
const choices = new Choices('#select', {
placeholder: true,
placeholderValue: 'Выберите язык',
choices: [
{ value: 'ru', label: 'Русский' },
{ value: 'en', label: 'English' }
]
});
Placeholder не влияет на структуру данных и не участвует в логике выбора, оставаясь исключительно визуальным элементом.
Внутренний рендер Choices.js обрабатывает placeholder как отдельный
UI-элемент. Он не является частью списка choices и не
участвует в фильтрации или поиске.
Поведение при рендере:
choiceПри включённой опции removeItemButton или
allowClear placeholder возвращается после удаления
последнего выбранного элемента.
const choices = new Choices('#select', {
placeholder: true,
placeholderValue: 'Выберите опцию',
removeItemButton: true,
allowSingleDeselect: true
});
После очистки значения интерфейс возвращается в исходное состояние с отображением placeholder.
При установке значения через API placeholder автоматически скрывается:
choices.setChoiceByValue('ru');
После выполнения:
При очистке значения через clearStore() или аналогичные
методы placeholder возвращается в исходное состояние.