jQuery Plugin For Custom Tags Input and Select Box - selectize.js

jQuery Plugin For Custom Tags Input and Select Box - selectize.js
File Size: 485 KB
Views Total:
Last Update:
Publish Date:
Official Website: Go to website
License: MIT
   

selectize.js is a useful and lightweight plugin for creating solid and user-friendly tags input field and select list with clean and powerful APIs & Codes. Please check the demo page to see it in action.

For IE 8 support, you should include es5-shim on your web page.

Related plugins:

Basic Usage:

1. Include jQuery library and selectize.js in the head section

<script src="/path/to/jquery.min.js"></script>
<script src="/path/to/selectize.js"></script>

2. Include jQuery selectize CSS to style the plugin

<link rel="stylesheet" href="selectize.css">

3. Create a container for the tags input

<input type="text" id="input-tags" class="demo-default" value="awesome,neat">

4. Call the function on the input field to initialize the plugin.

$('#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: ',',
  splitOn: null, // regexp or string for splitting up values from a paste command

  // 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,

  // If true, the dropdown will be closed after a selection is made.
  closeAfterSelect: false,

  // 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,

  // The class name added to the wrapper element while awaiting the fulfillment of load requests.
  loadingClass: 'loading',

  // 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. Callback functions.

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) { ... }

More examples:

Changelog:

v0.12.6 (2018-07-13)

v0.12.5 (2018-06-28)

  • Allow the dropdown to reopen on click if it is closed without losing focus by closeAfterSelect: true
  • Fixed bug making clearOptions function. Now it doesn't remove already selected options.
  • New feature: allow to disable single options or complete optgroups

v0.12.4 (2016-12-07)

  • added a new feature which allows to disable single options or complete optgroups

v0.12.4 (2016-10-13)

  • JS update

v0.12.3 (2016-08-25)

  • Make label[for] work after applying Selectize 
  • Output friendly error message when Microplguin is missing.
  • Add local server command grunt server.
  • Stop creating items automatically when text is pasted, only create them when pasted text contains delimiter.
  • Fix regression 'Required fields can not be focusable' in Chrome
  • Fix detection of Validity API, we had false negatives before.
  • Fix open keyboard bug under iOS after closing selection
  • Fix highlighting more than one character 

v0.12.2 (2016-06-24)

  • Fix issue preventing build ("Cannot assign to read only property 'subarray'") because of bug in uglifyjs.
  • Fix tabbing issue on IE11.
  • Fix jQuery initialization for jQuery >= 1.9
  • Make remove_button work for single-option usage
  • Fixed bug that made allowEmptyOption: true useless
  • Functions in option render can now return a DOM node in addition to text

2016-01-03

  • Released 0.12.1.
  • Functions in option render can now return a DOM node in addition to text.

2015-01-30

  • update+bugfix

v0.11.2 (2014-09-25)

  • update.

v0.11.0 (2014-08-02)

  • update.

v0.10.1 (2014-06-03)

  • update.

v0.9.1 (2014-05-01)

  • update.

v0.9.0 (2014-03-21)

  • update.

v0.8.5 (2013-11-25)

  • Fixed build script.

v0.8.4 (2013-11-15)

  • Added "createOnBlur" option.

v0.8.3 (2013-11-13)

  • Fix for initially-selected item not reappearing in dropdown after another option is selected (cache).

v0.8.2 (2013-11-03)

  • Fix for "change" event being fired when value doesn't change
  • Retain focus on ESC + close when already-selected option clicked ("single" mode)

v0.8.1 (2013-10-17)

  • Fixed the destroy() method so that it restores original options, optgroups, and tabindex that existed originally before running Selectize

v0.8.0 (2013-10-13)

  • Added right-to-left (RTL) environment support.
  • Added multi-property sorting (with configurable direction per field).
  • Added "required" attribute handling. Thanks to @sjhewitt.
  • Added support for the same option in multiple optgroups.
  • Improved width handling of inner textbox when leading/trailing whitespace is present. Thanks to @jacquelinewheeler.
  • Clicking the control when focused now toggles the dropdown when in single mode.
  • Highlight selected item in dropdown on focus.
  • Added "searchConjunction" setting to allow multiple search terms to be joined by an "and" or "or" operator.
  • Added "addPrecedence" setting to allow the "Add..." item to be selected by default when in create mode.
  • Fixed bug causing "remove_button" and "drag_drop" plugins to still be usable when control is locked/disabled.
  • Disabled native browser autocomplete on control.

v0.7.7 (2013-09-17)

  • Fixed addOptionGroup method

v0.7.5 (2013-09-09)

  • fixed typo

v0.7.3 (2013-08-31)

  • Added jQuery to deps.

v0.7.2 (2013-08-28)

  • Fix for .form-control style conflicts
  • Only fire "change" DOM event once. 

v0.7.0 (2013-08-25)

  • Simplified addOption() to no longer require "value" to be explicitly declared.

v0.6.14 (2013-08-06)

  • bugs fix

This awesome jQuery plugin is developed by selectize. For more Advanced Usages, please check the demo page or visit the official website.