$.fn.bsSelect
This jQuery plugin converts a simple select element into a bootstrap dropdown element. It offers numerous options, methods and events for further processing. It was developed on the basis of jQuery 3.6, Bootstrap 5.3 and Bootstrap icons.
- bootstrap 4 or 5
- jQuery
Download and include the script at the end of the body tag.
<!--suppress ALL -->
<script src="dist/locale/de-DE.min.js" type="text/javascript"><!-- optional -->
<script src="dist/jquery.bs-select.js" type="text/javascript">
or install with composer and include the script at the end of the body tag.
composer require webcito/bs-select
<!--suppress ALL -->
<script src="/vendor/webcito/bs-select/dist/locale/de-DE.min.js" type="text/javascript"> <!-- optional -->
<script src="/vendor/webcito/bs-select/dist/jquery.bs-select.min.js" type="text/javascript">
// multiple options
$.bsSelect.setDefaults(options);
// get default options
$.bsSelect.getDefaults();
All selects with the attribute [data-bs-toggle="select"]
or [data-toggle="select"]
are initialized automatically.
<!-- Simple selection -->
<!--suppress ALL -->
<select name="countries">
<option value="Germany">Deutschland</option>
<option value="Poland">Polen</option>
...
</select>
<!-- Or multiSelection -->
<select name="cities" multiple>
<option value="1">Berlin rocks</option>
<option value="2">New York</option>
...
</select>
<!-- Or with option groups -->
<select name="cities2" multiple>
<optgroup label="Germany">
<option value="1">Berlin</option>
<option value="2">Munich</option>
</optgroup>
<optgroup label="USA">
<option value="3">New York</option>
<option value="4">San Francisco</option>
</optgroup>
<optgroup label="Spain">
<option value="5">Barcelona</option>
<option value="6">Madrid</option>
</optgroup>
...
</select>
<!-- load jQuery and Bootstrap before -->
<script src="dist/jquery.bs-select.js" type="text/javascript">
<script>
$('select').bsSelect();
</script>
data-attribute | example | description |
---|---|---|
data-subtext | <option data-subtext="Germany" value="1">Berlin</option> |
Adds a small additional text section |
data-icon | <option data-icon="fa-solid fa-city" value="1">Berlin</option> |
Adds an icon in front of the option. (e.g. a class from Bootstrap Icons) |
property | data-attribute | type | default | desc |
---|---|---|---|---|
search | [data-search] | bool |
true |
adds a search function to the menu |
searchText | [data-search-text] | string |
Search.. |
"Placeholder for search input box* |
btnWidth | [data-btn-width] | string |
fit-content |
the css width of the dropdown button |
btnEmptyText | [data-btn-empty-text] | string |
Please select.. |
The text at no selection |
btnSplit | [data-btn-split] | string |
false |
create a split button dropdown bootstrap Split button |
btnClass | [data-btn-class] | string |
btn-outline-secondary |
The classes assigned to the dropdown button |
dropDirection | [data-drop-direction] | null|string |
null |
opens the DropDown in a desired direction. Possible directions are: dropup|dropend|dropstart|dropdown-center|dropup-center see bootstrap directions |
dropIconClass | [data-drop-icon-class] | null|string |
bi bi-chevron-down |
If an icon is set here, the dropdown toggle icon is replaced with it. This only works if btnSplit is false. |
menuHeaderClass | [data-menu-header-class] | string |
text-bg-secondary text-uppercase |
If option groups are present, the background class of the heading is set here. |
menuItemClass | [data-menu-item-class] | string |
null |
The classes are added to the element .dropdown-item . |
menuMaxHeight | [data-menu-max-height] | number |
300 |
maximum Height of the dropdown list before it starts scrolling. |
menuPreHtml | [data-menu-pre-html] | null|string |
null |
shows a text in the menu before the selection |
menuAppendHtml | [data-menu-append-html] | null|string |
null |
shows the text in the menu after the selection |
showSubtext | [data-show-subtext] | bool |
true |
If this option is true, options have the data attribute data-subtext, the subtext will be displayed in the dropdown. |
showActionMenu | [data-show-action-menu] | bool |
true |
If it is a multiple selection and this option is true, two buttons are displayed above the selection for faster selection. |
showMultipleCheckboxes | [data-show-action-menu] | bool |
false |
If this option is true, a checkbox is displayed in front of each option instead of the check icon. |
actionMenuBtnClass | [data-action-menu-btn-class] | string |
btn-light |
The classnames for the buttons in the action menu. |
showSelectionAsList | [data-show-selection-as-list] | bool |
true |
If it is a multiple selection, all selections should be listed below each other. If the value is false, it will show how much was selected. |
showSelectedText | function |
(selectedItems, totalItems) => {} |
If it is a multiple selection and the selected elements are greater than 1, this function is called. This function is ignored if the showSelectionAsList option is true. | |
formatSelectedText | function |
(title, subtext) => {} |
If it is a multiple selection and the selected elements are greater than 1, this function is called. This function is ignored if the showSelectionAsList option is true. | |
deselectAllText | [data-deselect-all-text] | string |
Deselect All |
If showActionMenu is true, the language of the two buttons can be set here. |
selectAllText | [data-select-all-text] | string |
Select All |
If showActionMenu is true, the language of the two buttons can be set here. |
checkedIcon | [data-checked-icon] | string |
bi bi-check-lg |
Class used to style the select icon. |
onBeforeChange | null|function |
($select) => { return true; } |
This function is called before the values are changed. If the function returns true, the change is made, otherwise nothing is changed. | |
onKeyDown | null|function |
($select, keyEvent) => { // } |
Called when the pressed key is not a dropdown command (arrowUp,arrowDown,ESCAPE) |
Methods are called as follows
$('select').bsSelect('method', param);
method | example | description |
---|---|---|
'show' |
$('select').bsSelect('show'); |
Opens the dropdown |
'hide' |
$('select').bsSelect('hide'); |
Closes the dropdown |
'val' |
$('select').bsSelect('val', 1); |
Changes the value of the select |
'selectAll' |
$('select').bsSelect('selectAll'); |
Selects all values |
'selectFirst' |
$('select').bsSelect('selectFirst'); |
Selects the first option element |
'selectLast' |
$('select').bsSelect('selectLast'); |
Selects the last option element |
'selectNone' |
$('select').bsSelect('selectNone'); |
deselects all values |
'clear' |
$('select').bsSelect('clear'); |
Empties the Select |
'updateOptions' |
$('select').bsSelect('updateOptions', {buttonClass: 'btn btn-danger',...}); |
Changes the settings of the dropdown. |
'setBtnClass' |
$('select').bsSelect('setBtnClass', 'btn btn-danger'); |
Behaves like updateOptions . The btnClass option is overwritten. |
'refresh' |
$('select').bsSelect('refresh'); |
Rebuild the dropdown. This is useful if the options are changed via Javascript. |
'getSelectedText' |
$('select').bsSelect('getSelectedText', (text, value) => {}); |
Retrieves the text based on the selections of the select |
'destroy' |
$('select').bsSelect('destroy'[, true]); |
Deletes the dropdown and restores the original select. If parameter is passed true, all data is removed from the element. |
'toggleDisabled' |
$('select').bsSelect('toggleDisabled'); |
Toggles the status of the dropdown button |
'setDisabled' |
$('select').bsSelect('setDisabled', true); |
Set the dropdown disabled (true) otherwise enabled (false) |
event type | Description |
---|---|
init.bs.select | Fires when the plugin has been initialised. |
hide.bs.select | Fires immediately when the hide instance method has been called. Returns whether value was changed as parameter 1 of the status. |
hidden.bs.select | Fired when the dropdown has finished being hidden from the user and CSS transitions have completed. |
show.bs.select | Fires immediately when the show instance method is called. |
shown.bs.select | Fired when the dropdown has been made visible to the user and CSS transitions have completed. |
refresh.bs.select | Fires when the refresh method has been invoked. |
change.bs.select | Fires when the values in the select have changed. Additional parameters are [valueBefore, valueAfter] |
clear.bs.select | Fires when the clear method has been called. |
acceptChange.bs.select | If the function onBeforeChange returns true, this event is fired. |
cancelChange.bs.select | If the function onBeforeChange returns false, this event is fired. |
update.bs.select | Fires when the method updateOptions or setBtnClass was called. |
destroy.bs.select | Fires when the destroy method has been activated. |
selectAll.bs.select | Fires when the select all option has been pressed. |
selectNone.bs.select | Fires when the select none option has been pressed. |
any.bs.select | Fires at every event. |
keydown.bs.select | Fires when the pressed key is not a dropdown command (arrowUp,arrowDown,ESCAPE) |
toggleDisabled.bs.select | Fires when the disable status changes. Returns the new status as a parameter. fn(e, (boolean)status){} |