Note: the ajax examples are using mockjax (http://github.com/appendto/jquery-mockjax) as the backend rather than a live server.
The Tag Handler will be initialized with no options and no default tags:
$("#array_tag_handler").tagHandler();
The Tag Handler will be initialized to use the JQuery UI Theme. Loaded theme: Smoothness
$("#array_tag_handler").tagHandler({jqueryTheme: true});
The Tag Handler will be initialized with preset tags from the assignedTags and availableTags arrays, and autocomplete witll be turned on:
$("#example_autocomplete").tagHandler({ assignedTags: [ 'C', 'Perl', 'PHP' ], availableTags: [ 'C', 'C++', 'C#', 'Java', 'Perl', 'PHP', 'Python' ], autocomplete: true });
The Tag Handler will be initialized and pull data via ajax, also sending some data to the server:
$("#example_ajaxinit").tagHandler({ getData: { id: 'user123', type: 'user' }, getURL: '/ajaxtest/get', autocomplete: true });
Same as the example above, but a different user is set in the getData/UpdateData options and now the tags will save when clicking the save button
$("#example_ajax_with_save").tagHandler({ getData: { id: 'user234', type: 'user' }, getURL: '/ajaxtest/get', updateData: { id: 'user234', type: 'user' }, updateURL: '/ajaxtest/update', autocomplete: true });
Same as the example above, but autoUpdate is true, tags will save automatically (no save button will be shown)
$("#example_ajax_with_auto_update").tagHandler({ getData: { id: 'user234', type: 'user' }, getURL: '/ajaxtest/get', updateData: { id: 'user234', type: 'user' }, updateURL: '/ajaxtest/update', autocomplete: true, autoUpdate: true });
The Tag Handler will be initialized but it will request the tag list when the user writes more than 2 chars (try typing in a mixed drink name for this example):
$("#example_ajax_on_demand").tagHandler({ getData: { id: 'user345', type: 'user' }, getURL: '/ajaxtest/search', autocomplete: true, initLoad: false, minChars: 2 });
Adding allowAdd: false will prevent the user from being able to add new tags.
$("#example_prevent_add_new").tagHandler({ assignedTags: [ 'C', 'Perl', 'PHP' ], availableTags: [ 'C', 'C++', 'C#', 'Java', 'Perl', 'PHP', 'Python' ], autocomplete: true, allowAdd: false });
The following example shows how to use add and delete callbacks. A call back returning false will stop the default process.
$("#example_with_callbacks").tagHandler({ assignedTags: [ 'C', 'Perl', 'PHP' ], availableTags: [ 'C', 'C++', 'C#', 'Java', 'Perl', 'PHP', 'Python' ], autocomplete: true, onAdd: function(tag) { alert('Added tag: ' + tag); }, onDelete: function(tag) { alert('Deleted tag: ' + tag); } });
The following example shows how to can pass in your own validation checks. This check is a callback that must return true if the tag is valid, or false if the tag fails inspection. The validator in this example uses regex to validate that only numbers are added to the tags.
$("#example_with_custom_validator").tagHandler({ onIsValid: function(newTag) { if (/^[0-9]+$/.test(newTag)) { alert("Tag Passed!"); return true; } alert("This new tag is not a valid number entered: "+newTag); return false; } });
The following example shows how to can pass in your own init callback. This call will be called after the tagHandler is loaded.
$("#example_with_after_load_callback").tagHandler({ afterLoad : function() { alert("TagHandeler Loaded!") } });
The following example shows how to set the maximum number of allowed tags
$("#example_with_maximum").tagHandler({ assignedTags: [ 'Perl' ], availableTags: [ 'C', 'C++', 'C#', 'Java', 'Perl', 'PHP', 'Python' ], autocomplete: true, maxTags:5 });
These are convenience methods for dealing with the Tag-Handler.
Note: clicking the example buttons will show any output as an alert and in the console.log.
Click on the button "Get Tags" to show an alert of active tags
var tags = $("#some_selector).tagHandler('getTags'); /* Do something with tags array */ alert(tags.join(,));
Click on the button "Get Serialized Tags" to show an alert of active tags
var tags = $("#some_selector).tagHandler('getSerializedTags'); /* Do something with tags array */ alert(tags);
Click on the button "Get Options" to show an alert of all tags available
var tags = $("#some_selector).tagHandler('getOptions'); /* Do something with tags array */ alert(tags.join(,));
Click on the button "Get Serialized Options" to show an alert of all tags available
var tags = $("#some_selector).tagHandler('getSerializedOptions'); /* Do something with tags array */ alert(tags);
Click on the button "Add Tag" to add a tag to the tag handler
$("#some_selector).tagHandler('addTag', 'New Tag');
Click on the button "Add Option" to add a tag to the list of available tags
$("#some_selector).tagHandler('addOption', 'New Tag');
Destroy an active tag handler and return it to its original state
$("#some_selector).tagHandler('addOption', 'New Tag');
Restart the tag handler. Make some changes and hit the Reload button to restore to it's original state. This function will also make the ajax calls to re-initialize the tag handler as well. Note: All unsaved changes will be lost!
$("#some_selector).tagHandler('reload');
Tag data specific options: |
||
Option | Description | Default Value |
assignedTags | array to pass a list of already assigned tags | [] |
availableTags | array to pass a list of all available tags | [] |
getData | data field with additional info for getURL | {} |
getURL | URL for retrieving tag lists via ajax | "e;"e; |
initLoad | indicates if all tags should be loaded on init | true |
updateData | data field with additional info for updtateURL | {} |
updateURL | URL for saving tags via ajax | "e;"e; |
Callback options: |
||
Option | Description | Default Value |
afterAdd | function to be called after a new tag is added | {} |
afterDelete | function to be called after a tag is deleted | {} |
onAdd | function to be called when a new tag is added -- if a false value is returned, the add will fail | {} |
onDelete | function to be called when a tag is deleted | {} |
onIsValid | function to be called for custom validation of tags. Must return true if tag passes inspection or false if it fails. | {} |
Miscellaneous options |
||
Option | Description | Default Value |
allowAdd | indicates whether the user can add new tags | true |
allowEdit | indicates whether the tag list is editable | true |
autocomplete | activates autocomplete dropdown functionality for tag name - requires jqueryui autocomplete plugin | false |
autoUpdate | indicates whether updating occurs automatically whenever a tag is added/deleted - if set true, the save button will not be shown | false |
className | base class name that will be added to the tag container | tagHandler |
debug | will turn on some console logging debug information | false |
delimiter | extra delimiter to use to separate tags - note 'enter', 'comma', and 'tab' are always allowed | false |
maxTags | sets a limit to the number of allowed tags, set to 0 to allow unlimited | 0 |
minChars | minimum number of chars to type before starting autocomplete | 0 |
msgError | message shown when there is an error loading the tags | There was an error getting the tag list. |
msgNoNewTag | message shown when the user cannot add a new tag | You don't have permission to create a new tag. |
msgMaxTags | message shown when the user has reached the maximum amount of tags allowed | Maximum tags allowed: |
queryname | query term used to send user typed data to the server | q |
sortTags | sets sorting of tag names alphabetically | true |
jqueryTheme | Use the Jquiry UI Theme instead of default | false |
Plugin Methods |
||
Method | Description | Usage |
getSerializedTags | Will return a comma separated string of the currently assigned tags for the object. | .tagHandler("getSerializedTags") |
getTags | Will return an array of the currently assigned tags for the object. | .tagHandler("getTags") |
getSerializedOptions | Will return a comma separated string of all available options. Includes the current selected tags well. | .tagHandler("getSerializedOptions") |
getOptions | Will return an array of all available options. Includes the current selected tags well. | .tagHandler("getTags") |
addTag | Will add a new tag to the list of assigned tags. | .tagHandler("addTag", "New Tag") |
removeTag | Will remove a tag from the list of assigned tags and move it to the available tags instead. | .tagHandler("removeTag", "Tag To Remove") |
addOption | Will add a tag to the list of available tags. | .tagHandler("addOption", "New Option") |
saveTags | Will force a save of current tags. Only works if updateURL is passed in | .tagHandler("saveTags") |
destroy | Destory a current taghandler and restore the selector to it's initial state | .tagHandler("destroy") |
reload | Return the tagHandler to it's inital state. See example above for more details | .tagHandler("reload") |
version | Returns the version of the TagHandler | .tagHandler("version") |