Tagit on input field

Using jQuery Tagit on input fields.

by karimkhan

HTML

<script src="http://webspirited.com/tagit/js/tagit-themeroller.js"></script>
<link rel="stylesheet" href="http://webspirited.com/tagit/css/themeroller/bootstrap/Bootstrap.css">
<link rel="stylesheet" href="http://webspirited.com/tagit/css/themeroller/tagit.css">
<input type="text" id="text" name="tags" value="marketing, feedback,job"/>

CSS

ul.tagit.ui-widget li.tagit-choice {
    display: block;
    float: left;
    position: relative;
    line-height: inherit;
    border-radius: 6px;
    background-color: #EFEFEF;
    border: 1px solid #DDD;
    padding: 5px;
    margin-right: 10px;
    color: #08c;
    text-decoration: none;
}

ul.tagit.ui-widget li.tagit-choice a.tagit-close {
    cursor: pointer;
    position: absolute;
    right: 5px;
    top: 50%;
    margin-top: -8px;
    display: none;
}

JavaScript

$(document).ready(function() {

  //The demo tag array
  var availableTags = [
    {value: 1, label: 'tag1'},
    {value: 2, label: 'tag2'},
    {value: 3, label: 'tag3'}];
    
  //The text input
  var input = $("input#text");
    
  //The tagit list
  var instance = $("<ul class=\"tags\"></ul>");
    
  //Store the current tags
  //Note: the tags here can be split by any of the trigger keys
  //      as tagit will split on the trigger keys anything passed  
  var currentTags = input.val();
    
  //Hide the input and append tagit to the dom
  input.hide().after(instance);
    
  //Initialize tagit
  instance.tagit({
    tagSource:availableTags,
    tagsChanged:function () {
                                        
      //Get the tags            
      var tags = instance.tagit('tags');
      var tagString = [];
                            
      //Pull out only value
      for (var i in tags){
        tagString.push(tags[i].value);
      }
        
      //Put the tags into the input, joint by a ','
      input.val(tagString.join(','));
    }
  });
    
  //Add pre-loaded tags to tagit
  instance.tagit('add', currentTags);
});