jQuery Token Input

HTML

<div class="token-box">Tokens:
    <input class="token" type="text" />
    <button class="check">check</button>
    <div class="spacer">More space</div>
</div>

CSS

/* Example tokeninput style #1: Token vertical list*/
 ul.token-input-list {
    overflow: hidden;
    height: auto !important;
    height: 1%;
    width: 400px;
    border: 1px solid #999;
    cursor: text;
    font-size: 12px;
    font-family: Verdana, sans-serif;
    z-index: 999;
    margin: 0;
    padding: 0;
    background-color: #fff;
    list-style-type: none;
    clear: left;
}
ul.token-input-list li {
    list-style-type: none;
}
ul.token-input-list li input {
    border: 0;
    width: 350px;
    padding: 3px 8px;
    background-color: white;
    -webkit-appearance: caret;
}
ul.token-input-disabled, ul.token-input-disabled li input {
    background-color: #E8E8E8;
}
ul.token-input-disabled li.token-input-token {
    background-color: #D9E3CA;
    color: #7D7D7D
}
ul.token-input-disabled li.token-input-token span {
    color: #CFCFCF;
    cursor: default;
}
li.token-input-token {
    overflow: hidden;
    height: auto !important;
    height: 1%;
    margin: 3px;
    padding: 3px 5px;
    background-color: #d0efa0;
    color: #000;
    font-weight: bold;
    cursor: default;
    display: block;
}
li.token-input-token p {
    float: left;
    padding: 0;
    margin: 0;
}
li.token-input-token span {
    float: right;
    color: #777;
    cursor: pointer;
}
li.token-input-selected-token {
    background-color: #08844e;
    color: #fff;
}
li.token-input-selected-token span {
    color: #bbb;
}
div.token-input-dropdown {
    position: absolute;
    width: 400px;
    background-color: #fff;
    overflow: hidden;
    border-left: 1px solid #ccc;
    border-right: 1px solid #ccc;
    border-bottom: 1px solid #ccc;
    cursor: default;
    font-size: 12px;
    font-family: Verdana, sans-serif;
    z-index: 1;
}
div.token-input-dropdown p {
    margin: 0;
    padding: 5px;
    font-weight: bold;
    color: #777;
}
div.token-input-dropdown ul {
    margin: 0;
    padding: 0;
}
div.token-input-dropdown ul li {
    background-color: #fff;
    padding: 3px;
   ...

JavaScript

/*
 * jQuery Plugin: Tokenizing Autocomplete Text Entry
 * Version 1.6.0
 *
 * Copyright (c) 2009 James Smith (http://loopj.com)
 * Licensed jointly under the GPL and MIT licenses,
 * choose which one suits your project best!
 *
 */

(function ($) {
    // text replace function modified from http://stackoverflow.com/a/6012345/173225
    jQuery.fn.textWalk = function (fn, str) {
        var func = jQuery.isFunction(fn);
        var remove = [];

        this.contents().each(jwalk);

        // remove the replaced elements
        remove.length && $(remove).remove();

        function jwalk() {
            var nn = this.nodeName.toLowerCase();
            if (nn === '#text' && $(this).parents('.highlight-container').length == 1) {
                var newValue;

                if (func) {
                    newValue = fn.call(this);
                } else {
                    newValue = this.data.replace(fn, str);
                }

                $(this).before(newValue);
                remove.push(this)
            } else if (this.nodeType === 1 && this.childNodes && this.childNodes[0] && nn !== 'script' && nn !== 'textarea') {
                $(this).contents().each(jwalk);
            }
        }
        return this;
    };
}(jQuery));

(function ($) {
    // Default settings
    var DEFAULT_SETTINGS = {
        // Search settings
        method: "GET",
        contentType: "json",
        queryParam: "q",
        searchDelay: 300,
        minChars: 1,
        propertyToSearch: "name",
        jsonContainer: null,
        searchType: "starts", // valid values: starts, contains
        searchId: true,

        // Display settings
        hintText: "Type in a search term",
        noResultsText: "No results",
        searchingText: "Searching...",
        deleteText: "&times;",
        animateDropdown: true,
        zIndex: 999,
        cssClass: "",
        maxHeight: 300,

        // Tokenization settings
        tokenLimit: null,
        tokenDelimiter:...