Two-side Multi Select Plugin with jQuery - multiselect.js
| File Size: | 123 KB |
|---|---|
| Views Total: | 102700 |
| Last Update: | |
| Publish Date: | |
| Official Website: | Go to website |
| License: | MIT |
multiselect.js is a jQuery plugin that converts a multiple select into two-side select boxes so the users can move items between two boxes by selecting items(s) and clicking on arrow buttons. Compatible with Bootstrap 3 framework.
See also:
Installation:
# NPM $ npm install multiselect-two-sides # Bower $ bower install multiselect-two-sides
How to use it:
1. Load Twitter's Bootstrap's stylesheet in the header.
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
2. Load jQuery library, Bootstrap's JS and the jQuery multiselect.js script at the bottom of the html page.
<script src="//code.jquery.com/jquery-1.11.2.min.js"></script> <script src="//netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script> <script src="js/multiselect.js"></script>
3. Create a two sided select list as follow:
<div class="row">
<div class="col-xs-5">
<select name="from" id="multiselect" class="form-control" size="8" multiple="multiple">
<option value="1">C++</option>
<option value="2">C#</option>
<option value="3">Haskell</option>
<option value="4">Java</option>
<option value="5">JavaScript</option>
<option value="6">Lisp</option>
<option value="7">Lua</option>
<option value="8">MATLAB</option>
<option value="9">NewLISP</option>
<option value="10">PHP</option>
<option value="11">Perl</option>
<option value="12">SQL</option>
<option value="13">Unix shell</option>
</select>
</div>
<div class="col-xs-2">
<button type="button" id="multiselect_rightAll" class="btn btn-block"><i class="glyphicon glyphicon-forward"></i></button>
<button type="button" id="multiselect_rightSelected" class="btn btn-block"><i class="glyphicon glyphicon-chevron-right"></i></button>
<button type="button" id="multiselect_leftSelected" class="btn btn-block"><i class="glyphicon glyphicon-chevron-left"></i></button>
<button type="button" id="multiselect_leftAll" class="btn btn-block"><i class="glyphicon glyphicon-backward"></i></button>
</div>
<div class="col-xs-5">
<select name="to" id="multiselect_to" class="form-control" size="8" multiple="multiple">
</select>
</div>
</div>
4. Initialize the plugin with default options.
$('#multiselect').multiselect();
5. Plugin options available.
right: The select where the options are moved torightSelected: The button that moves selected options from left to rightrightAll: multiselect_id_rightAll The button that moves all options from left to rightleftSelected: The button that moves selected options from right to leftleftAll: The button that moves all options from right to leftundo: The button that triggers the undo actionredo: The button that triggers the redo actionmoveUp: The button that move options from right side to the topmoveDown: The button that move options from right side to the bottomstartUp: remove from left all options that are present in right Whatever you want to do with $left and $right elements when the multiselect plugin is initialisedsort: Will sort options when an action happend into right or left elements.beforeMoveToRight: Whatever you want to do with $left, $right and option[s] elements before they are moved to right. Keep in mind that this function must return a boolean value. true will let the action to be performed. false will stop the actionmoveToRight: If you want to define your own moveToRight functionality you can do this by defining moveToRight: function(Multiselect, options, event, silent, skipStack) { ... }. options - HTML element containing all selected options. event - the event that initialised the action. silent - boolean that tells if you have to trigger beforeMoveToRight and afterMoveToRight. skipStack - boolean that tells if you have to handle undo/redo stackafterMoveToRight: Whatever you want to do with $left, $right and option[s] elements after they are moved to right.beforeMoveToLeft: Whatever you want to do with $left, $right and option[s] elements before they are moved to left. Keep in mind that this function must return a boolean value. true will let the action to be performed. false will stop the actionmoveToLeft: If you want to define your own moveToLeft functionality you can do this by defining moveToLeft: function(Multiselect, options, event, silent, skipStack) { ... }.. options - HTML element containing all selected options. event - the event that initialised the action. silent - boolean that tells if you have to trigger beforeMoveToLeft and afterMoveToLeft. skipStack - boolean that tells if you have to handle undo/redo stackafterMoveToLeft: Whatever you want to do with $left, $right and option[s] elements after they are moved to left.beforeMoveUp: Whatever you want to do with $options elements before they are moved up.afterMoveUp: Whatever you want to do with $options elements after they are moved up.beforeMoveDown: Whatever you want to do with $options elements before they are moved down.afterMoveDown: Whatever you want to do with $options elements after they are moved down.keepRenderingSort: When you want to keep options sorted as they was rendered, keepRenderingSort must be true. When keepRenderingSort is true, sort function will be ignored.submitAllLeft: When you don’t want to send all options from the left side to server, submitAllLeft must be false.submitAllRight: When you don’t want to send all options from the right side to server, submitAllRight must be false.search: When you want to have search fields for left and right elementsfireSearch: Tell to multiselect when to start applying the search.
Changelog:
2022-02-15
- Fix Safari detection
2021-09-16
- Removed return before call to self.callbacks.moveToRight. The return prevents the function from continuing with the rest of the code in the method such as calling the afterMoveToRight.
- Moved the code calling the beforeMoveToRight before the call to moveToRight.
- Performed similar actions in moveToLeft function.
v2.5.7 (2020-05-06)
- Upgrade dev dependencies
v2.5.5 (2018-07-25)
- Fixed: :visible selector is not working on safari, use :not(.hidden) (beebfe0)
- Fixed: ignoreDisabled: true does not work with optgroups
v2.5.4 (2018-07-24)
- Bugfix Searching and Adding elements cause the already selected elements to get added as a hidden element;
- Bugfix :visible selector is not working on safari, use :not(.hidden)
2018-07-17
- v2.5.4: Bugfix Searching and Adding elements cause the already selected elements to get added as a hidden element
2018-07-16
- v2.5.3: Fixed ignoreDisabled: true does not work with optgroups
2018-07-10
- v2.5.2: Fixed invalid regular expression.
2018-04-27
- v2.5.1
2018-02-06
- v2.5.0: feat: now we can have different sort functions for left and right
2018-01-13
- v2.4.1: Multiple select with 'shift' button on Firefox
2017-10-16
- v2.4.0: Handle click on optgroup
2017-08-30
- v2.3.13: Search improvements; allows to edit moveFromAtoB function
2017-05-02
- Add new callbacks: before/after move up/down
2017-04-26
- Add new callbacks: before/after move up/down
2017-04-12
- mShow/nHide in Safari
2017-03-21
- Search by regex and keep rendering sort when having optgroup's
2017-03-19
- Optgroup bugfix
2017-03-18
- v2.3.6: Add moveFromAtoB - in this order we do the same thing when moving options from one side to another
2017-01-24
- v2.3.2: Option to set minimum length for search filter activation; Update multiselect.min.js to include feature to specify which attribute to match optgroup
2016-12-05
- v2.3.1: Add filtering for lists with optgroup + Allow move up/down to work within optgroups
2016-09-13
- v2.3.1: Add filtering for lists with optgroup + Allow move up/down to work within optgroups
2016-08-27
- First version of move up/down buttons for right side select options
2016-07-07
- bugfix
2016-06-30
- Set as version 2.2.8
2016-06-07
- Fixed: Using optgroups breaks keepRenderingSort
2016-03-31
- Change the behaviour of hide/show functions only if browser is IE
2016-03-16
- Fixed js objects for IE support - minify
2016-03-14
- Make search case insensitive
2016-02-26
- submitAllRight bugfix
2016-02-03
- Hide options when search
2016-01-26
- Fixed Search functionality not working in any version of IE
2015-10-27
- Search: add regex search
2015-10-01
- Enable search options
2015-09-28
- Add submitAllLeft and submitAllRight options
2015-06-01
- Keep render sort for right side
2015-05-29
- .attr replaced with .prop - in some versions of firefox a bug occurs
2015-05-13
- Allow user to define moveToLeft and moveToRight
- Multiple destinations: bugfix when there are already options in right sides.
2015-04-27
- Origin data in right select is not in request parameter - BUGFIX
This awesome jQuery plugin is developed by crlcu. For more Advanced Usages, please check the demo page or visit the official website.











