1. Import the Tags.js.
import Tags from "./tags.js";
2. Initialize the library on the select element.
Tags.init("select[multiple]"); 3. That’s it. It will automatically convert all select boxes with the multi attribute into a tags input where you can select options from a suggestion list while typing.
<selectclass="form-select" id="validationTags" multiple> <option selected disabled hidden value="">Choose a tag...</option> <option value="1" selected="selected">JavaScript</option> <option value="2">HTML5</option> <option value="3">CSS3</option> <option value="4">jQuery</option> <option value="5">React</option> <option value="6">Angular</option> <option value="7">Vue</option> <option value="8">Python</option> </select> <div class="invalid-feedback">Please select a valid tag.</div>
4. Add the data-allow-new="true" to the select box in cases where you want to add new options.
<select class="form-select" id="validationTags" multiple data-allow-new="true"> <option selected disabled hidden value="">Choose a tag...</option> <option value="1" selected="selected">JavaScript</option> <option value="2">HTML5</option> <option value="3">CSS3</option> <option value="4">jQuery</option> <option value="5">React</option> <option value="6">Angular</option> <option value="7">Vue</option> <option value="8">Python</option> </select>
5. Determine whether to allow new options only if they match a given regex.
<select class="form-select" id="validationTagsNew" name="tags_new[]" multiple data-allow-new="true" data-regex=".*@mycompany.com$"> <option disabled hidden value="">Add mail address</option> <option value="1" selected="selected">info@mycompany.com</option> <option value="2">mr.x@mycompany.com</option> <option value="3">ms.x@mycompany.com</option> </select> <div class="invalid-feedback">Please select only @mycompany.com addresses.</div>
6. Determine whether to show all suggestions using the data-show-all-suggestions attribute.
<select class="form-select" id="validationTags" multiple data-show-all-suggestions="true"> ... </select>
7. Enable the close icon to clear all sections.
<select class="form-select" id="validationTags" multiple data-allow-clear="true" data-clear-label="Clear"> ... </select>
8. Load data from an external JSON file.
<select class="form-select" id="validationTagsJson" name="tags_json[]" multiple data-allow-new="true" data-server="demo.json" data-live-server="1" data-server-params='{"key":"val"}'>
<option disabled hidden value="">Choose a tag...</option>
</select> 9. Set the maximum number of tags allowed to insert.
<select class="form-select" id="validationTagsJson" name="tags_json[]" multiple data-max="5" data-server="demo.json" data-live-server="1"> <option disabled hidden value="">Choose a tag...</option> </select>
10. Customize the separator. You can add multiple separators with |.
<select class="form-select" id="validationTagsJson" name="tags_json[]" multiple data-separator=" |," data-server="demo.json" data-live-server="1"> <option disabled hidden value="">Choose a tag...</option> </select>
11. Determine how many characters need to be typed to show the dropdown. Default: 1.
<select class="form-select" id="validationTagsJson" name="tags_json[]" data-suggestions-threshold="2"> <option disabled hidden value="">Choose a tag...</option> </select>
12. Customize the badge style and/or class.
<option value="2" data-badge-style="success" selected="selected">Banana</option> <option value="3" data-badge-style="warning" data-badge-class="text-dark another-class">Orange</option> <option value="4" data-badge-style="secondary">Blueberry with a very long label that pushes the menu</option>
13. Determine whether to keep suggestions open after selection. Clear on focus out. Default: false.
<option value="2" data-badge-style="success" selected="selected">Banana</option> <option value="3" data-badge-style="warning" data-badge-class="text-dark another-class">Orange</option> <option value="4" data-badge-style="secondary">Blueberry with a very long label that pushes the menu</option>
<select class="form-select" id="validationTagsJson" name="tags_json[]" multiple data-allow-new="true" data-server="demo.json" data-live-server="1" data-server-params='{"key":"val"}' data-keep-open="1">
<option disabled hidden value="">Choose a tag...</option>
</select> 14. Set the debounce time. Default: 300.
<select class="form-select" id="validationTagsJson" name="tags_json[]" multiple data-max="5" data-debounce-time="500" data-server="demo.json" data-live-server="1"> <option disabled hidden value="">Choose a tag...</option> </select>
15. Set the debounce time. Default: 300.
<select class="form-select" id="validationTagsJson" name="tags_json[]" multiple data-max="5" data-debounce-time="500" data-server="demo.json" data-live-server="1"> <option disabled hidden value="">Choose a tag...</option> </select>
16. You’re also allowed to pass the options via JavaScript. Full options:
items: Array.<(Suggestion|SuggestionGroup)>,
allowNew: false,
showAllSuggestions: false,
badgeStyle: "primary",
allowClear: false,
clearEnd: false,
selected: [],
regex: "",
separator: [],
max: 0,
clearLabel: "Clear",
searchLabel: "Type a value",
keepOpen: false,
allowSame: false,
baseClass: "",
placeholder: "",
addOnBlur: false,
showDisabled: false,
hideNativeValidation: false,
suggestionsThreshold: 1,
maximumItems: 0,
autoselectFirst: true,
updateOnSelect: false,
highlightTyped: false,
fullWidth: false,
fixed: false,
labelField: "label",
valueField: "value",
queryParam: "query",
server: "",
serverMethod: "GET",
serverParams: {},
fetchOptions: {},
liveServer: false,
noCache: true,
allowHtml: false,
debounceTime: 300,
notFoundMessage: "",
onRenderItem: (item, label, inst) => {
return label;
},
onSelectItem: (item, inst) => {},
onClearItem: (value, inst) => {},
onCreateItem: (option, inst) => {},
onBlur: (event, inst) => {},
onFocus: (event, inst) => {},
onCanAdd: (text, data, inst) => {},
onServerResponse: (response) => {
return response.json();
}, 17. API methods.
inst.getSelectedValues();
inst.resetState();
inst.setItem(index);
inst.addItem('New Item');
inst.removeItem(index);
inst.removeAll();
inst.toggleSuggestions(false);
inst.resetSuggestions();
inst.resetSearchInput();
inst.dispose(); v1.7.10 (04/18/2025)
v1.7.9 (04/16/2025)
v1.7.8 (04/04/2025)
v1.7.7 (02/13/2025)
v1.7.6 (11/27/2024)
v1.7.5 (08/19/2024)
v1.7.4 (08/02/2024)
v1.7.3 (08/01/2024)
v1.7.2 (05/29/2024)
v1.7.0 (02/12/2024)
v1.7.0 (02/10/2024)
v1.6.16 (01/30/2024)
v1.6.15 (11/29/2023)
v1.6.14 (11/28/2023)
v1.6.13 (11/23/2023)
v1.6.12 (11/23/2023)
v1.6.11 (10/11/2023)
v1.6.10 (10/09/2023)
v1.6.9 (09/20/2023)
v1.6.8 (09/05/2023)
v1.6.7 (07/20/2023)
v1.6.6 (07/19/2023)
v1.6.5 (07/18/2023)
v1.6.4 (07/03/2023)
v1.6.3 (07/01/2023)
v1.6.2 (06/19/2023)
v1.6.1 (06/17/2023)
v1.6.0 (06/16/2023)
v1.5.24 (06/14/2023)
v1.5.23 (06/09/2023)
v1.5.22 (05/12/2023)
v1.5.21 (05/02/2023)
v1.5.20 (04/27/2023)
v1.5.19 (04/27/2023)
v1.5.18 (04/21/2023)
v1.5.17 (04/17/2023)
v1.5.16 (04/17/2023)
v1.5.15 (04/11/2023)
v1.5.14 (04/11/2023)
v1.5.13 (03/17/2023)
v1.5.12 (03/16/2023)
v1.5.10 (03/13/2023)
v1.5.9 (03/07/2023)
v1.5.8 (03/01/2023)
v1.5.7 (02/27/2023)
v1.5.6 (02/14/2023)
v1.5.5 (02/09/2023)
v1.5.4 (01/17/2023)
v1.5.3 (01/17/2023)
v1.5.2 (01/09/2022)
v1.5.1 (12/12/2022)
v1.5.0 (11/21/2022)
v1.4.42 (11/09/2022)
v1.4.41 (10/26/2022)
v1.4.40 (10/25/2022)
v1.4.39 (10/13/2022)
v1.4.38 (07/05/2022)
v1.4.37 (07/04/2022)
v1.4.36 (06/30/2022)
v1.4.35 (06/22/2022)
v1.4.34 (04/22/2022)
v1.4.32 (04/19/2022)
v1.4.30/31 (04/19/2022)
v1.4.29 (03/18/2022)
v1.4.28 (03/18/2022)
v1.4.27 (03/18/2022)
v1.4.26 (03/17/2022)
v1.4.25 (03/01/2022)
v1.4.24 (02/11/2022)
v1.4.23 (02/10/2022)
v1.4.22 (02/08/2022)
v1.4.21 (01/20/2022)
v1.4.20 (01/20/2022)
v1.4.19 (01/19/2022)
v1.4.18 (01/19/2022)
v1.4.14 (01/17/2022)
v1.4.12 (01/15/2022)
v1.4.11 (01/14/2022)
v1.4.10 (01/13/2022)
v1.4.9 (01/13/2022)
v1.4.8 (01/12/2022)
v1.4.7 (01/12/2022)
v1.4.6 (01/10/2022)
v1.4.5 (01/10/2022)
v1.4.4 (01/10/2022)
v1.4.3 (01/10/2022)
v1.4.2 (12/29/2021)
v1.4.1 (12/29/2021)
v1.4.0 (12/28/2021)
v1.3.6 (12/28/2021)
v1.3.5 (12/23/2021)
v1.3.4 (12/23/2021)
v1.3.3 (12/23/2021)
v1.3.2 (12/23/2021)
v1.3.0/1 (12/13/2021)
v1.2.2 (12/13/2021)
v1.2.0 (11/18/2021)
v1.1.6 (11/15/2021)
v1.1.5 (10/26/2021)
v1.1.4 (08/22/2021)
v1.1.3 (08/19/2021)
v1.1.2 (08/10/2021)
v1.1.1 (08/10/2021)
v1.1.0 (08/10/2021)
v1.0.3 (08/10/2021)
v1.0.2 (06/28/2021)
The post Easy Tags Input Component For Bootstrap 5/4 – Tags.js appeared first on CSS Script.
Anthropic has introduced a new memory import tool for Claude that allows users to seamlessly…
A supply chain attack targeting developers surfaced on March 2, 2026, when unauthorized code was…
Today's links No one wants to read your AI slop: If you must do this, for…
The flower-shaped device wraps around brain organoids and maps nearly all electrical activity. Pea-sized brain…
The AI image race in early 2026 is increasingly defined by two different philosophies. On…
In 2026, AI apps have indeed become increasingly diverse. In addition to the well-known general…
This website uses cookies.