Choices Js Select
Choices.js library provides a modern, interactive replacement for standard HTML forms.
Choices.js Library
A choices component provides a modern, interactive replacement for standard HTML forms, allowing users to select or input values with enhanced search, tagging, and multi-select capabilities.
Choices.js is a lightweight, dependency-free
JavaScript library that upgrades native <select> and
<input type="text"> elements into clean, searchable, and highly
customizable UI components. It offers features like tagging, filtering, and full internationalization
(I18N) support.
To implement Choices.js, you only need to include the following two links in your HTML file.
Place the stylesheet link inside the <head> tag to load the necessary styling.
<link href="https://cdn.jsdelivr.net/npm/choices.js/public/assets/styles/choices.min.css" rel="stylesheet" />
Place this script tag just before the closing </body> tag to load the library's
functionality.
<script src="https://cdn.jsdelivr.net/npm/choices.js/public/assets/scripts/choices.min.js"></script>
Below are several examples showcasing the capabilities of choices components.
Text Inputs Examples
A collection of examples showcasing text inputs.
Multiple Select Input Examples
A collection of examples showcasing various multi-select component configurations.
<label for="choices-multiple-default">Default</label>
<select class="form-control" data-trigger name="choices-multiple-default" id="choices-multiple-default" placeholder="This is a placeholder" multiple>
<option value="Choice 1" selected>Choice 1</option>
<option value="Choice 2">Choice 2</option>
<option value="Choice 3">Choice 3</option>
<option value="Choice 4" disabled>Choice 4</option>
</select>
<label for="choices-multiple-remove-button">With remove button</label>
<select
class="form-control"
name="choices-multiple-remove-button"
id="choices-multiple-remove-button"
placeholder="This is a placeholder"
multiple
>
<option value="Choice 1" selected>
Choice 1
</option>
<option value="Choice 2">Choice 2</option>
<option value="Choice 3">Choice 3</option>
<option value="Choice 4">Choice 4</option>
</select>
<label for="multiple-option-groups">Option groups</label>
<select
class="form-control"
name="multiple-option-groups"
id="multiple-option-groups"
placeholder="This is a placeholder"
multiple
>
<option value="">Choose a city</option>
<optgroup label="FR">
<option value="Paris">Paris</option>
<option value="Nice">Nice</option>
<option value="Toulouse">Toulouse</option>
</optgroup>
<optgroup label="UK">
<option value="Edinburgh">Edinburgh</option>
<option value="Bristol">Bristol</option>
<option value="London">London</option>
</optgroup>
<optgroup label="US">
<option value="Los Angeles" disabled>
Los Angeles
</option>
<option value="Seattle">Seattle</option>
<option value="Miami">Miami</option>
</optgroup>
<optgroup label="DE">
<option value="Frankfurt">Frankfurt</option>
<option value="Cologne">Cologne</option>
<option value="Munich">Munich</option>
</optgroup>
<optgroup label="IT">
<option value="Rome">Rome</option>
<option value="Milan">Milan</option>
<option value="Venice">Venice</option>
</optgroup>
<optgroup label="AU">
<option value="Sydney">Sydney</option>
<option value="Melbourne">Melbourne</option>
<option value="Perth">Perth</option>
</optgroup>
</select>
<label for="multiple-choices-rtl">Right-to-left</label>
<select
class="form-control"
data-trigger
name="multiple-choices-rtl"
id="multiple-choices-rtl"
placeholder="This is a placeholder"
multiple
dir="rtl"
>
<option value="Choice 1" selected>
Choice 1
</option>
<option value="Choice 2">Choice 2</option>
<option value="Choice 3">Choice 3</option>
<option value="Choice 4" disabled>
Choice 4
</option>
</select>
<label for="choices-multiple-labels">Use label in event (add/remove)</label>
<p id="message"></p>
<select id="choices-multiple-labels" multiple></select>
Single Select Input Examples
A collection of examples showcasing various single select component configurations.
Try searching for 'fantastic', "Label 3" should display
Try searching for 'fantastic', "Label 3" should display
<label for="single-select-default">Default</label>
<select class="form-control" data-trigger name="single-select-default" id="single-select-default" placeholder="This is a search placeholder">
<option value="">This is a placeholder</option>
<option value="Choice 1">Choice 1</option>
<option value="Choice 2">Choice 2</option>
<option value="Choice 3">Choice 3</option>
</select>
<label for="choices-single-groups">Option groups</label>
<select class="form-control" data-trigger name="choices-single-groups" id="choices-single-groups">
<option value="">Choose a city</option>
<optgroup label="FR">
<option value="Paris">Paris</option>
<option value="Nice">Nice</option>
<option value="Toulouse">Toulouse</option>
</optgroup>
<optgroup label="UK">
<option value="Edinburgh">Edinburgh</option>
<option value="Bristol">Bristol</option>
<option value="London">London</option>
</optgroup>
<optgroup label="US">
<option value="Los Angeles" disabled>
Los Angeles
</option>
<option value="Seattle">Seattle</option>
<option value="Miami">Miami</option>
</optgroup>
<optgroup label="DE">
<option value="Frankfurt">Frankfurt</option>
<option value="Cologne">Cologne</option>
<option value="Munich">Munich</option>
</optgroup>
<optgroup label="IT">
<option value="Rome">Rome</option>
<option value="Milan">Milan</option>
<option value="Venice">Venice</option>
</optgroup>
<optgroup label="AU">
<option value="Sydney">Sydney</option>
<option value="Melbourne">Melbourne</option>
<option value="Perth">Perth</option>
</optgroup>
</select>
<label for="choices-single-rtl">Right-to-left</label>
<select class="form-control" data-trigger name="choices-single-rtl" id="choices-single-rtl" dir="rtl">
<option value="Choice 1 selected">Choice 1</option>
<option value="Choice 2">Choice 2</option>
<option value="Choice 3">Choice 3</option>
</select>
<label for="choices-single-no-search">Options added via config with no search</label>
<select class="form-control" name="choices-single-no-search" id="choices-single-no-search">
<option value="0">Zero</option>
</select>
<label for="choices-single-preset-options">Option and option groups added via config</label>
<select class="form-control" name="choices-single-preset-options" id="choices-single-preset-options"></select>
<label for="choices-single-selected-option">Option selected via config with custom properties</label>
<p>
<small>Try searching for 'fantastic', "Label 3" should display</small>
</p>
<select class="form-control" name="choices-single-selected-option" id="choices-single-selected-option"></select>
<label for="choices-with-custom-props-via-html">
Option searchable by custom properties via <code>data-custom-properties</code> attribute
</label>
<p>
<small>Try searching for 'fantastic', "Label 3" should display</small>
</p>
<select class="form-control" id="choices-with-custom-props-via-html">
<option value="Dropdown item 1">Label One</option>
<option value="Dropdown item 2" selected disabled>
Label Two
</option>
<option value="Dropdown item 3" data-custom-properties="This option is fantastic">
Label Three
</option>
</select>
<label for="choices-single-no-sorting">Options without sorting</label>
<select class="form-control" name="choices-single-no-sorting" id="choices-single-no-sorting">
<option value="Tokyo">Tokyo</option>
<option value="Osaka">Osaka</option>
<option value="Kyoto">Kyoto</option>
<option value="Sydney">Sydney</option>
<option value="Melbourne">Melbourne</option>
<option value="Perth">Perth</option>
<option value="Rio de Janeiro">Rio de Janeiro</option>
<option value="Sao Paulo" disabled>
Sao Paulo
</option>
<option value="Salvador">Salvador</option>
<option value="Cairo">Cairo</option>
<option value="Giza">Giza</option>
<option value="Capetown">Cape Town</option>
<option value="Johannesburg">Johannesburg</option>
<option value="Durban">Durban</option>
<option value="New Delhi">New Delhi</option>
<option value="Mumbai" disabled>
Mumbai
</option>
<option value="Bangalore">Bangalore</option>
<option value="Dubai">Dubai</option>
</select>
Sizes
This example demonstrates how to apply different sizing options—large, default, and small.
<label for="multi-select-lg">Large Multi Select</label>
<select class="form-control" data-trigger name="multi-select-lg" id="multi-select-lg" placeholder="This is a placeholder" multiple>
<option value="Choice 1" selected>Choice 1</option>
<option value="Choice 2">Choice 2</option>
<option value="Choice 3">Choice 3</option>
<option value="Choice 4" disabled>Choice 4</option>
</select>
<label for="multi-select-regular">Default Multi Select</label>
<select
class="form-control"
data-trigger
name="multi-select-regular"
id="multi-select-regular"
placeholder="This is a placeholder"
multiple
>
<option value="Choice 1" selected>
Choice 1
</option>
<option value="Choice 2">Choice 2</option>
<option value="Choice 3">Choice 3</option>
<option value="Choice 4" disabled>
Choice 4
</option>
</select>
<label for="multi-select-sm">Small Multi Select</label>
<select
class="form-control"
data-trigger
name="multi-select-sm"
id="multi-select-sm"
placeholder="This is a placeholder"
multiple
>
<option value="Choice 1" selected>
Choice 1
</option>
<option value="Choice 2">Choice 2</option>
<option value="Choice 3">Choice 3</option>
<option value="Choice 4" disabled>
Choice 4
</option>
</select>
<label for="single-select-lg">Large Single Select</label>
<select
class="form-control"
data-trigger
name="single-select-lg"
id="single-select-lg"
placeholder="This is a search placeholder"
>
<option value="">This is a placeholder</option>
<option value="Choice 1">Choice 1</option>
<option value="Choice 2">Choice 2</option>
<option value="Choice 3">Choice 3</option>
</select>
<label for="single-select-regular">Default Single Select</label>
<select
class="form-control"
data-trigger
name="single-select-regular"
id="single-select-regular"
placeholder="This is a search placeholder"
>
<option value="">This is a placeholder</option>
<option value="Choice 1">Choice 1</option>
<option value="Choice 2">Choice 2</option>
<option value="Choice 3">Choice 3</option>
</select>
<label for="single-select-sm">Small Single Select</label>
<select
class="form-control"
data-trigger
name="single-select-sm"
id="single-select-sm"
placeholder="This is a search placeholder"
>
<option value="">This is a placeholder</option>
<option value="Choice 1">Choice 1</option>
<option value="Choice 2">Choice 2</option>
<option value="Choice 3">Choice 3</option>
</select>
<label for="choices-limited-lg" class="form-label">
Large Text Input
</label>
<input type="text" id="choices-limited-lg" value="preset-1,preset-2" />
<label for="choices-limited-regular" class="form-label">
Default Text Input
</label>
<input type="text" id="choices-limited-regular" value="preset-1,preset-2" />
<label for="choices-limited-sm" class="form-label">
Small Text Input
</label>
<input type="text" id="choices-limited-sm" value="preset-1,preset-2" />
Form Interaction
In the below examples, a user can change the values and press reset to restore to initial state.
<form>
<label for="reset-simple">Change me!</label>
<select class="form-control" name="reset-simple" id="reset-simple">
<option value="Option 1 selected">Option 1</option>
<option value="Option 2">Option 2</option>
<option value="Option 3">Option 3</option>
<option value="Option 4">Option 4</option>
<option value="Option 5">Option 5</option>
</select>
<label for="reset-multiple">And me!</label>
<select class="form-control" name="reset-multiple" id="reset-multiple" multiple>
<option value="Choice A" selected>Choice A</option>
<option value="Choice B">Choice B</option>
<option value="Choice C">Choice C</option>
<option value="Choice D" disabled>Choice D</option>
</select>
<button class="btn btn-outline-secondary" type="reset">Reset</button>
</form>