Active Development?
This plugin is no longer under active development, I will continue to merge in pull requests as long as they conform to the Note for contributers/pull requesters below, but do not have the time to activly develop the plugin. If someone wishes to take over the plugin create an issue in the tracker and I will discuss with you there. For anyone looking to use this plugin I strongly suggest checkout out the awesome Select2 by Igor Vaynberg. Which has all the features of Tagit and then some!
Note for contributors/pull requesters
We welcome all bug fixes and additions to tagit, it is a community project after all, however we have one rule for commits:
- All edits must be applied to both tagit.js and tagit-themeroller.js no pull requests will be accepted unless this is done to ensure the scripts function equally.
It depends on [jQuery 1.7.2](http://jquery.com). and [jQuery-ui 1.8](http://jqueryui.com) The _jQuery Tagit Plugin_ transforms an html unordered list into a unique tagging plugin.
Why unique? Because jQuery Tagit uses jQuery UI's auto-complete plugin to supply suggestions to users as they type and has some awesome features like sortable tags.
Quicklinks
Features
- Convenient way for users to enter a list of items
- Fully integrated with jQuery ui auto complete
- Automatically adds current input as tag if input loses focus
- Easy to use public methods
- Easy to theme (single css file)
- Customizable trigger keys
- Backspace on empty input deletes previous tag
- Ability to provide initial tags on creation though options
- Ability to provide initial tags on creation via list items
- Option to toggle usage of a hidden select so the tags can be sent using a normal form!
- Ability to re-arrange tags by drag and drop!
- Optional ThemeRoller compatibility!
- Fully HTML5 Data-attributes compliant!
Options
<tr> <td>triggerKeys</td> <td>Array</td> <td>['enter', 'space', 'comma', 'tab']</td> <td>An array containing all or any of the default options.<br/> These are the keys that will trigger a tag completion </td> </tr> <tr> <td>allowNewTags</td> <td>Bool</td> <td>true</td> <td>Allow tags that do not exist in tagSource to be entered?</td> </tr> <tr> <td>initialTags</td> <td>Array</td> <td>[]</td> <td>An array containing tags to pre-populate the field with</td> </tr> <tr> <td>minLength</td> <td>Int</td> <td>1</td> <td>The minimum length before a triggerKey will create a tag</td> </tr> <tr> <td>maxLength</td> <td>Int</td> <td>1</td> <td>The maximum length a tag is allowed to be</td> </tr> <tr> <td>select</td> <td>Bool</td> <td>false</td> <td>Maintain a hidden select in place for form submissions<br/> To name the select simply give your UL a name attribute! *** Don't forget to include [ and ] if your language (e.g. PHP) requires them! </td> </tr> <tr> <td>tagsChanged</td> <td>Callback</td> <td>function(tagValue, action, element)</td> <td>Callback on changed tags: **tagValue:** string **action:** string - either 'added', 'popped', 'moved' or 'reset' **element:** object - reference to the added LI element </td> </tr> <tr> <td>caseSensitive</td> <td>Bool</td> <td>false</td> <td>The check for existing tags is case sensitive. If false the words "Foo" and "foo" considered the same </td> </tr> <tr> <td>highlightOnExistColor</td> <td>String</td> <td>#0F0</td> <td>If the user tries to add a tag that already exists the existing tag will run a highlight effect using the defined background color. If null, the highlight effect is turned off. </td> </tr> <tr> <td>placeholder</td> <td>String</td> <td>Enter tags...</td> <td>The placeholder of the tagit field. It can be any string. </td> </tr> <tr> <td>inputWidth</td> <td>integer</td> <td>150</td> <td>The length of the input. It can be adjusted based on the palceholder. </td> </tr> <tr> <td>maxTags</td> <td>Int</td> <td>unlimited</td> <td>The maximum number of tags that the user can enter. If omitted, an unlimited number of tags are allowed. </td> </tr> <tr> <td>sortable</td> <td>Bool, String</td> <td>false</td> <td>Allows the user to re-order the tags using drag and drop. If true the whole tag is dragable. If 'handle' a handle is rendered and the tag is only dragable using the handle. </td> </tr> <tr> <td>allowDuplicates</td> <td>Bool</td> <td>False</td> <td>Allow Duplicate tags if set to true </td> </tr>
Name | Type | Default | Note |
---|---|---|---|
tagSource | String, Array, Callback | [] | This option maps directly to the jQuery UI Autocomplete source option |
Methods
<tr> <td><code>.tagit("tags")<code></td> <td>Array</td> <td>Returns an array of objects about all the tags.</td> </tr> <tr> <td><code>.tagit("reset")</code></td> <td>null</td> <td>Resets the tags list to the initial value</td> </tr> <tr> <td><code>.tagit("fill", [{label: 'tag', value: 12}, {label: 'stuff', value: 13}])</code></td> <td>null</td> <td>Empties the tags and fills the plugin with the provided tags.</td> </tr> <tr> <td><code>.tagit("add", {label: 'tag', value: 12})</code></td> <td>Bool</td> <td>Adds a tag to the plugin.</td> </tr> <tr> <td><code>.tagit("remove", 'tag', 12)</code></td> <td>Bool</td> <td>Removes a tag by its label or value.</td> </tr>
Name | Return | Note |
---|---|---|
.tagit("destroy") | null | Returns the ul to its original state |
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License with original attribution remaining with Matthew Hailwood and http://jquery.webspirited.com.