Bootstrap 3 multiselect plugin as form element
Categories:
Integrating Bootstrap 3 Multiselect as a Form Element

Learn how to effectively use and configure the Bootstrap 3 Multiselect plugin to enhance your form elements, allowing users to select multiple options from a dropdown list.
The Bootstrap 3 Multiselect plugin is a powerful tool for transforming standard HTML <select>
elements into rich, interactive multiselect dropdowns. It's particularly useful when you need to provide users with the ability to choose several options from a list without consuming excessive screen real estate. This article will guide you through the process of integrating and customizing this plugin within your Bootstrap 3 projects.
Prerequisites and Setup
Before you can use the Bootstrap 3 Multiselect plugin, you need to ensure your project has the necessary dependencies. This includes Bootstrap 3 itself, jQuery, and the plugin's CSS and JavaScript files. Proper inclusion order is crucial for the plugin to function correctly.
flowchart TD A[Start] --> B{Project Setup} B --> C[Include jQuery] C --> D[Include Bootstrap 3 CSS] D --> E[Include Bootstrap 3 JS] E --> F[Include Multiselect CSS] F --> G[Include Multiselect JS] G --> H[Initialize Multiselect] H --> I[End]
Dependency and Initialization Flow for Bootstrap 3 Multiselect
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bootstrap Multiselect Example</title>
<!-- Bootstrap 3 CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<!-- Bootstrap Multiselect CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.13/css/bootstrap-multiselect.css">
</head>
<body>
<div class="container">
<h2>My Multiselect Form</h2>
<form>
<div class="form-group">
<label for="my-select">Choose Options:</label>
<select id="my-select" multiple="multiple">
<option value="option1">Option 1</option>
<option value="option2">Option 2</option>
<option value="option3">Option 3</option>
<option value="option4">Option 4</option>
</select>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>
<!-- jQuery -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- Bootstrap 3 JS -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<!-- Bootstrap Multiselect JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.13/js/bootstrap-multiselect.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#my-select').multiselect();
});
</script>
</body>
</html>
Basic HTML structure with all required dependencies and multiselect initialization.
Customizing the Multiselect Behavior
The Bootstrap 3 Multiselect plugin offers a wide range of options for customization, allowing you to tailor its appearance and functionality to your specific needs. These options are passed as an object during initialization.
$(document).ready(function() {
$('#my-select').multiselect({
includeSelectAllOption: true, // Adds a 'Select All' checkbox
enableFiltering: true, // Enables search filter
buttonWidth: '200px', // Sets the width of the button
maxHeight: 200, // Sets max height of the dropdown
dropRight: true, // Aligns dropdown to the right
buttonText: function(options, select) {
if (options.length === 0) {
return 'None selected <b class="caret"></b>';
}
else if (options.length > 3) {
return options.length + ' selected <b class="caret"></b>';
}
else {
var labels = [];
options.each(function() {
if ($(this).attr('label') !== undefined) {
labels.push($(this).attr('label'));
}
else {
labels.push($(this).html());
}
});
return labels.join(', ') + ' <b class="caret"></b>';
}
}
});
});
Example of advanced multiselect initialization with various customization options.
Handling Selected Values on Form Submission
When a form containing a multiselect element is submitted, the selected values are typically sent as an array of strings. It's important to understand how to retrieve and process these values on the server-side, regardless of whether you're using a traditional form submission or an AJAX request.
name
attribute of your <select>
element is crucial. Without it, the selected values will not be submitted with the form data.<select id="my-select-with-name" name="selectedOptions[]" multiple="multiple">
<option value="apple">Apple</option>
<option value="banana">Banana</option>
<option value="cherry">Cherry</option>
</select>
Adding a name
attribute with []
for array submission.
When the form is submitted, the server will receive an array of values under the selectedOptions
key. For example, if 'Apple' and 'Cherry' are selected, the server might receive selectedOptions = ['apple', 'cherry']
.