017c201094
Previously, when in results the enter key would select items that were highlighted if they were not already selected. In the case of a select where multiple items could be selected, pressing enter when highlighting a selected item would also allow it to be unselected. While this seems intuitive for accessibility purposes, the enter button essentially working as a toggle, it caused some really strange behavior. - If the enter button was held down, all previously selected items would be unselected. - The enter button did not work the same across both single and multiple selects. After listening to user feedback, I have decided to remove the "enter as toggle" functionality from Select2 and have gone back to just having the enter button select items. This means that instead of unselected items that are already selected and highlighted, Select2 will just close the dropdown. This is the same as what Select2 would previously do for single selects, so the keyboard functionality is now the same across both. Because this removed the only easy way to unselect items in the dropdown using the keyboard, we had to maintain the toggle functionality. We decided to implement the toggle functionality on the CTRL + Space keybinding, which is in line with other applications. Now when pressing CTRL + Space at the same time in the dropdown, the highlighted result will behave the same as if the mouse selected it, which will toggle the current item in multiple select mode and close the dropdown in single select mode. This is the same keybinding that Windows Explorer [1] and GTK [2] use for toggling the current selection, which was why it was picked. This also fixes an issue where keyboard focus would be lost once an item was unselected from the results. This was due to a bug in the CloseOnSelect module that would only automatically close the dropdown when an item was selected, but not when an item was unselected. Now the dropdown will be closed automatically when an item is unselected, which will also cause the selection (and eventually the search) to be focused. This fixes two issues described in https://github.com/select2/select2/issues/3036#issuecomment-76321411. [1]: http://superuser.com/q/78891/72528 [2]: https://developer.gnome.org/gtk3/stable/GtkIconView.html#GtkIconView-toggle-cursor-item |
||
---|---|---|
dist | ||
docs | ||
src | ||
tests | ||
vendor | ||
.editorconfig | ||
.gitignore | ||
.jshintignore | ||
.jshintrc | ||
.travis.yml | ||
bower.json | ||
component.json | ||
composer.json | ||
CONTRIBUTING.md | ||
Gruntfile.js | ||
LICENSE.md | ||
package.json | ||
README.md | ||
select2.jquery.json |
Select2
Select2 is a jQuery-based replacement for select boxes. It supports searching, remote data sets, and pagination of results.
To get started, checkout examples and documentation at https://select2.github.io/
Use cases
- Enhancing native selects with search.
- Enhancing native selects with a better multi-select interface.
- Loading data from JavaScript: easily load items via AJAX and have them searchable.
- Nesting optgroups: native selects only support one level of nesting. Select2 does not have this restriction.
- Tagging: ability to add new items on the fly.
- Working with large, remote datasets: ability to partially load a dataset based on the search term.
- Paging of large datasets: easy support for loading more pages when the results are scrolled to the end.
- Templating: support for custom rendering of results and selections.
Browser compatibility
- IE 8+
- Chrome 8+
- Firefox 10+
- Safari 3+
- Opera 10.6+
Usage
You can source Select2 directly from a CDN like JSDliver or CDNJS, download it from this GitHub repo, or use one of the integrations below.
Integrations
- Wicket-Select2 (Java / Apache Wicket)
- select2-rails (Ruby on Rails)
- AngularUI (AngularJS)
- Django
- Symfony
- Symfony2
- Bootstrap 2 and Bootstrap 3 (CSS skins)
- Meteor (Bootstrap 3 skin)
- Meteor
- Yii 2.x
- Yii 1.x
- AtmosphereJS
Internationalization (i18n)
Select2 supports multiple languages by simply including the right language JS
file (dist/js/i18n/it.js
, dist/js/i18n/nl.js
, etc.) after
dist/js/select2.js
.
Missing a language? Just copy src/js/select2/i18n/en.js
, translate it, and
make a pull request back to Select2 here on GitHub.
Documentation
The documentation for Select2 is available
through GitHub Pages and is located within this repository
in the docs
folder.
Community
You can find out about the different ways to get in touch with the Select2 community at the Select2 community page.
Copyright and license
The license is available within the repository in the LICENSE file.