selectize.js是一个有用且轻量级的插件,用于创建坚实且用户友好的标签输入字段和选择列表,并具有干净强大的API和代码。
还与最新的Bootstrap 5/4/3框架兼容。
请查看演示页面以查看它的实际操作。
对于IE 8的支持,你应该在你的网页上包括es5垫片。
1.在head部分包含jQuery库和selectize.js
- <script src="/path/to/jquery.min.js"></script>
- <script src="/path/to/selectize.js"></script>
2.包含jQuery selectize CSS来设计插件的样式
- <link rel="stylesheet" href="selectize.css">
3.为标签输入创建一个容器
- <input type="text" id="input-tags" class="demo-default" value="awesome,neat">
4.调用输入字段上的函数来初始化插件。
- $('#input-tags').selectize({
- // An array of the initial options available to select; array of objects.
- // By default this is populated from the original input element.
- // If your element is a <select> with <option>s specified this property gets populated automatically.
- // Setting this property is convenient if you have your data as an array and want to automatically generate the <option>s.
- options: [],
- // Initial selected values.
- items: []
- // Option groups that options will be bucketed into.
- // If your element is a <select> with <optgroup>s this property gets populated automatically.
- // Make sure each object in the array has a property named whatever optgroupValueField is set to.
- optgroups: [],
- // Custom delimiter character to separate items
- delimiter: ',',
- // All plugins live in their own folders in "src/plugins".
- plugins: [],
- // regexp or string for splitting up values from a paste command
- splitOn: null,
- // If false, items created by the user will not show up as available options once they are unselected.
- persist: true,
- // Enable or disable international character support.
- diacritics: true,
- // Allows the user to create new items that aren't in the initial list of options.
- // This setting can be any of the following: true, false (disabled), or a function to process input.
- // The function can take one of two forms: synchronous (with signature function(input){} or asynchronous (with signature function(input, callback).
- // In the synchronous case, the function should return an object for the options (eg, with defaults: return { 'value': value, 'text': text };).
- // The asynchronous version should invoke the callback with the result in the same format as the object above (eg, callback( { 'value': value, 'text': text});)
- create: false,
- // If true, when user exits the field (clicks outside of input), a new option is created and selected (if create setting is enabled).
- createOnBlur: false,
- // Specifies a RegExp or a string containing a regular expression that the current search filter must match to be allowed to be created.
- // May also be a predicate function that takes the filter text and returns whether it is allowed.
- createFilter: null,
- // Toggles match highlighting within the dropdown menu.
- highlight: true,
- // Show the dropdown immediately when the control receives focus.
- openOnFocus: true,
- // The max number of items to render at once in the dropdown list of options.
- maxOptions: 1000,
- // The max number of items the user can select. Null allows an unlimited number of items
- maxItems: 1,
- // If true, the items that are currently selected will not be shown in the dropdown list of available options.
- hideSelected: false,
- // If true, the "Add..." option is the default selection in the dropdown.
- addPrecedence: false,
- // If true, the tab key will choose the currently selected item.
- selectOnTab: false,
- // If true, the load function will be called upon control initialization (with an empty search). Alternatively it can be set to 'focus' to call the load function when control receives focus.
- preload: false,
- // Allows empty options.
- allowEmptyOption: false,
- // Shows empty option in the dropdown
- showEmptyOptionInDropdown: false,
- // Label for empty option
- emptyOptionLabel: '--',
- // Enable setting the first option in the list as active.
- setFirstOptionActive: false,
- // If true, the dropdown will be closed after a selection is made.
- closeAfterSelect: false,
- // in ms
- closeDropdownThreshold: 250,
- // The animation duration (in milliseconds) of the scroll animation triggered when going [up] and [down] in the options dropdown.
- scrollDuration: 60,
- // The number of milliseconds to wait before requesting options from the server or null.
- // If null, throttling is disabled. Useful when loading options dynamically while the user types a search / filter expression.
- loadThrottle: 300,
- // or 'top'
- deselectBehavior: 'previous',
- // The class name added to the wrapper element while awaiting the fulfillment of load requests.
- loadingClass: 'loading',
- // The number of milliseconds to wait before requesting options from the server or null.
- // If null, throttling is disabled. Useful when loading options dynamically while the user types a search / filter expression.
- loadThrottle: 300,
- // The placeholder of the control (displayed when nothing is selected / typed).
- // Defaults to input element's placeholder, unless this one is specified.
- placeholder: undefined,
- // The <option> attribute from which to read JSON data about the option.
- dataAttr: 'data-data',
- // The name of the property to group items by.
- optgroupField: 'optgroup',
- // The name of the property to use as the value when an item is selected.
- valueField: 'value',
- // The name of the property to render as an option / item label (not needed when custom rendering functions are defined).
- labelField: 'text',
- // The name of the property to disabled option and optgroup.
- disabledField: 'disabled',
- // The name of the property to render as an option group label (not needed when custom rendering functions are defined).
- optgroupLabelField: 'label',
- // The name of the option group property that serves as its unique identifier.
- optgroupValueField: 'value',
- // If truthy, Selectize will make all optgroups be in the same order as they were added (by the `$order` property).
- // Otherwise, it will order based on the score of the results in each.
- lockOptgroupOrder: false,
- // A single field or an array of fields to sort by.
- // Each item in the array should be an object containing at least a field property.
- // Optionally, direction can be set to 'asc' or 'desc'.
- // The order of the array defines the sort precedence.
- sortField: '$order',
- // An array of property names to analyze when filtering options.
- searchField: ['text'],
- // When searching for multiple terms (separated by space), this is the operator used. Can be 'and' or 'or' .
- searchConjunction: 'and',
- // multi or single
- mode: null,
- // Default classes
- wrapperClass: 'selectize-control',
- inputClass: 'selectize-input',
- dropdownClass: 'selectize-dropdown',
- dropdownContentClass: 'selectize-dropdown-content',
- // The element the dropdown menu is appended to. This should be 'body' or null. If null, the dropdown will be appended as a child of the Selectize control.
- dropdownParent: null,
- // Copy the original input classes to the dropdown element.
- copyClassesToDropdown: true,
- // Custom rendering functions. Each function should accept two arguments: data and escape and return HTML (string or DOM element) with a single root element.
- // The escape argument is a function that takes a string and escapes all special HTML characters. This is very important to use to prevent XSS vulnerabilities.
- render: {
- /*
- item: null,
- optgroup: null,
- optgroup_header: null,
- option: null,
- option_create: null
- */
- }
- });
5.回调函数。
- load : null, // function(query, callback) { ... }
- score : null, // function(search) { ... }
- onInitialize : null, // function() { ... }
- onChange : null, // function(value) { ... }
- onItemAdd : null, // function(value, $item) { ... }
- onItemRemove : null, // function(value) { ... }
- onClear : null, // function() { ... }
- onOptionAdd : null, // function(value, data) { ... }
- onOptionRemove : null, // function(value) { ... }
- onOptionClear : null, // function() { ... }
- onOptionGroupAdd : null, // function(id, data) { ... }
- onOptionGroupRemove : null, // function(id) { ... }
- onOptionGroupClear : null, // function() { ... }
- onDropdownOpen : null, // function($dropdown) { ... }
- onDropdownClose : null, // function($dropdown) { ... }
- onType : null, // function(str) { ... }
- onDelete : null, // function(values) { ... }
6.API方法。
- // initialize the Selectize control
- var $select = $('#input-tags').selectize(options);
- // fetch the instance
- var selectize = $select[0].selectize;
- // add options, string or array
- selectize.addOption(data);
- // update options
- selectize.updateOption(value, data)
- // remove an option
- selectize.removeOption(value);
- // clear options
- selectize.clearOptions(silent);
- // get options
- selectize.getOption(value)
- // retrieve the jQuery element for the previous or next option, relative to the currently highlighted option
- // the direction argument should be 1 for "next" or -1 for "previous"
- selectize.getAdjacentOption(value, direction);
- // refresh options
- selectize.refreshOptions(triggerDropdown);
- // clear all selected items
- selectize.clear(silent);
- // get item
- selectize.getItem(value);
- // add an item
- selectize.addItem(value, silent);
- // remove an item
- selectize.removeItem(value, silent);
- // create a new item
- selectize.createItem(value, [triggerDropdown], [callback]);
- // refresh items
- selectize.refreshItems();
- // add a new optgroup
- selectize.addOptionGroup(id, data);
- // remove a optgroup
- selectize.removeOptionGroup(id);
- // clear all optgroups
- selectize.clearOptionGroups();
- // open the autocomplete dropdown
- selectize.open();
- // close the autocomplete dropdown
- selectize.close();
- // re-position the autocomplete dropdown
- selectize.positionDropdown();
- // destroy the instnace
- selectize.destroy();
- // load options
- selectize.load(fn)
- // focus on the control
- selectize.focus();
- // move the focus out of the control
- selectize.blur();
- // lock/unlock the control
- selectize.lock();
- selectize.unlock();
- // disable/enable user input
- selectize.disable();
- selectize.enable();
- // get the value of the control
- selectize.getValue();
- // set the selected items
- selectize.setValue(value, silent);
- // set the selected item
- selectize.setActiveItem($item, e);
- // reset the number of max items to the given value
- selectize.setMaxItems(value);
- // move the caret to the specified position
- selectize.setCaret(index);
- // check if is reaching the limit
- selectize.isFull();
- // clear cache
- selectize.clearCache(template);
- // update place holder
- selectize.updatePlaceholder();
- // add an event listener
- selectize.on(event, handler);
- // remove an event listener
- selectize.off(event, handler);
- // remove all event listeners
- selectize.off(event);
- // trigger event listeners
- selectize.trigger(event, ...);
7.事件。
- selectize.on('initialize', function(){
- // do something
- });
- selectize.on('focus', function(){
- // do something
- });
- selectize.on('blur', function(){
- // do something
- });
- selectize.on('clear', function(){
- // do something
- });
- selectize.on('option_clear', function(){
- // do something
- });
- selectize.on('optgroup_clear', function(){
- // do something
- });
- selectize.on('destroy', function(){
- // do something
- });
- selectize.on('change', function(value){
- // do something
- });
- selectize.on('item_add', function(value, $item){
- // do something
- });
- selectize.on('item_remove', function(value, $item){
- // do something
- });
- selectize.on('option_add', function(value, data){
- // do something
- });
- selectize.on('option_remove', function(value){
- // do something
- });
- selectize.on('optgroup_add', function(id, data){
- // do something
- });
- selectize.on('optgroup_remove', function(id){
- // do something
- });
- selectize.on('dropdown_open', function($dropdown){
- // do something
- });
- selectize.on('dropdown_close', function($dropdown){
- // do something
- });
- selectize.on('type', function(str){
- // do something
- });
- selectize.on('load', function(data){
- // do something
- });
版本0.15.2(2023-01-07)
版本0.15.1(2022-11-18)
版本0.15.0(2022-11-15)
版本0.14.0(2022-10-03)
版本0.13.7(2022-09-23)
版本0.13.6(2022-07-10)
版本0.13.4(2022-02-06)
版本0.13.3(2022-01-28)
v0.13.3 (2021-06-05)
版本0.13.2(2020-12-01)
版本0.13.0(2020-12-01)
版本0.13.0(2020-11-19)
版本0.13.0(2020-11-04)
版本0.12.6(2018-07-13)
版本0.12.5(2018-06-28)
版本0.12.4(2016-12-07)
版本0.12.4(2016年10月13日)
版本0.12.3(2016年8月25日)
版本0.12.2(2016年6月24日)
2016-01-03
2015-01-30
版本0.11.2(2014-09-25)
版本0.11.0(2014-08-02)
版本0.10.1(2014-06-03)
v0.9.1 (2014-05-01)
v0.9.0 (2014-03-21)
v0.8.5 (2013-11-25)
版本0.8.4(2013-11-15)
v0.8.3(2013年11月13日)
版本0.8.2(2013-11-03)
版本0.8.1(2013-10-17)
v0.8.0(2013年10月13日)
版本0.7.7(2013-09-17)
v0.7.5 (2013-09-09)
v0.7.3(2013年8月31日)
版本0.7.2(2013-08-28)
v0.7.0(2013年8月25日)
版本0.6.14(2013-08-06)