Javascript jQuery-使用cookie存储标记,或使用jquerytagbox插件存储本地存储

Javascript jQuery-使用cookie存储标记,或使用jquerytagbox插件存储本地存储,javascript,jquery,plugins,cookies,local-storage,Javascript,Jquery,Plugins,Cookies,Local Storage,我正在尝试从jQuery TagBox插件(来自geektantra.com/2011/05/jQuery TagBox插件)保存标记 (函数(jQuery){ jQuery.fn.tagBox=函数(选项){ var默认值={ 分隔符:',', 类名:“标记框”, tagInputClassName:“”, tagButtonClassName:“”, TagButtonTile:“添加标签”, 确认删除:false, confirmRemovalText:“是否确实要删除标记?”, comp

我正在尝试从jQuery TagBox插件(来自geektantra.com/2011/05/jQuery TagBox插件)保存标记

(函数(jQuery){
jQuery.fn.tagBox=函数(选项){
var默认值={
分隔符:',',
类名:“标记框”,
tagInputClassName:“”,
tagButtonClassName:“”,
TagButtonTile:“添加标签”,
确认删除:false,
confirmRemovalText:“是否确实要删除标记?”,
completeOnSeparator:对,
completeOnBlur:错误,
只读:false,
enableDropdown:false,
dropdownSource:函数(){},
下拉选项属性:“标题”,
removeTagText:“X”,
maxTags:-1,
maxTagsErr:function(max_tags){alert(“最多可以添加“+max_tags+”个标记!”);},
beforeTagAdd:函数(tag_to_add){},
后标记:函数(添加了_标记){}
} 
如果(选项){
options=jQuery.extend(默认值,选项);
}否则{
选项=默认值;
}
options.tagInputClassName=(options.tagInputClassName!='')?options.tagInputClassName+'':;
options.tagButtonClassName=(options.tagButtonClassName!='')?options.tagButtonClassName+'':;
//隐藏元素
var$elements=此;
如果($elements.length<1)返回;
$elements.each(函数(){
var uuid=Math.round(Math.random()*0x10000).toString(16)+Math.round(Math.random()*0x10000).toString(16);
var$element=jQuery(this);
$element.hide();
试一试{
var options_from_attribute=jQuery.parseJSON($element.attr(options.dropdownOptionsAttribute));
options=jQuery.extend(options\u from\u属性,options);
}捕获(e){
控制台日志(e);
}
如果($element.is(“:disabled”))
options.readonly=true;
if((jQuery.isArray($element))&&$element[0].hasAttribute(“只读”))
options.readonly=true
//创建DOM元素
if((options.enableDropdown)&&options.dropdownSource()!=null){
if(options.dropdownSource().jquery){
var$tag_input_elem=(options.readonly)?“”:options.dropdownSource();
$tag_input_elem.attr(“id”,options.className+'-input-'+uuid);
$tag_input_elem.addClass(options.className+'-input');
}否则{
var tag_dropdown_items_obj=jQuery.parseJSON(options.dropdownSource());
var tag_dropdown_options=新数组(“”);
jQuery.each(标记\下拉菜单\项目\对象,函数(i,v){
if((jQuery.isArray(v))&&v.length==2){
tag_下拉菜单_options.push(''+v[1]+'');
}else如果(!jQuery.isArray(v)){
标签下拉菜单选项。按下(“”+v+“”);
}
});
var tag_dropdown=''+tag_dropdown_options.join(“”+'';
var$tag\u input\u elem=(options.readonly)?“”:jQuery(tag\u下拉菜单);
}
}否则{
var$tag\u input\u elem=(options.readonly)?“”:jQuery(“”);
}
var$tag\u add\u elem=(options.readonly)?“”:jQuery(“”);
var$tag\u list\u elem=jQuery(“”);
var$tagBox=jQuery(“”).append($tag\u input\u elem).append($tag\u add\u elem).append($tag\u list\u elem);
$element.before($tagBox);
$element.addClass(“jQTagBox”);
$element.unbind('reloadTagBox');
$element.bind('reloadTagBox',function(){
$tagBox.remove();
$element.tagBox(选项);
});     
//从输入项生成标记列表
生成标签列表(获取当前标签列表());
如果(!options.readonly){
$tag\u add\u elem.单击(函数(){
var selected_tag=$tag_input_elem.val();
选项。beforeTagAdd(所选标签);
添加_标签(选中的_标签);
如果($tag\u input\u elem.is(“选择”)){
$tag_input_elem.find('option[value=“”+selected_tag+'”).attr(“disabled”、“disabled”);
}
$tag_input_elem.val(“”);
选项。后标签(选定的标签);
});
$tag\输入\元素按键(功能(e){
var代码=(e.keyCode?e.keyCode:e.which);
var this_val=jQuery(this.val();
if(code==13 | |(code==options.separator.charCodeAt(0)和&options.completeonsepator)){
$tag_add_elem.trigger(“单击”);
返回false;
}
});
如果(options.completeOnBlur){
$tag_input_elem.blur(函数(){
if(jQuery(this).val()!=“”)
$tag_add_elem.trigger(“单击”);
});
}
jQuery('.'+options.className+'-remove-'+uuid).live(“单击”,函数)(){
如果(选项。确认删除){
var c=确认(options.confirmRemovalText);
如果(!c)返回false;
}
var tag_item=jQuery(this.attr('rel');
如果($tag\u input\u elem.is(“选择”)){
$tag_input_elem.find('option[value=“”+tag_item+'”).removeAttr(“disabled”);
}
$tag_input_elem.val(“”);
移除标签(标签项目);
});
}
//方法
遇到函数分隔符_(val){
返回值(val.indexOf(options.separator)!=“-1”)?真:假;
}
函数get_current_tags_list(){
var tags_list=$element.val().split(options.separator);
tags_list=jQuery.map(tags_list,函数(项){returnjquery.trim(项);});
返回标签列表;
}
函数生成标签列表(标签列表){
var tags_list=jQuery.unique(tags_list.sort()).sort();
$tag_list_elem.html(“”);
jQuery.each(标记、列表、函数(键、值){
如果(val!=“”){
var remove_tag_link=(options.readonly)?“”:“”;
if((options.enableDropdown)和&jQuery('#'+options.className+'-input-'+uuid).find(“option”).length>0){
var display_val=jQuery('#'+options.className+'-input-'+uuid).find(“option[value=''+val+']).text();
}否则{
变量
(function(jQuery) {
  jQuery.fn.tagBox = function(options) {
    var defaults = {
      separator: ',',
      className: 'tagBox',
      tagInputClassName: '',
      tagButtonClassName: '',
      tagButtonTitle: 'Add Tag',
      confirmRemoval: false,
      confirmRemovalText: 'Do you really want to remove the tag?',
      completeOnSeparator: true,
      completeOnBlur: false,
      readonly: false,
      enableDropdown: false,
      dropdownSource: function() {},
      dropdownOptionsAttribute: "title",
      removeTagText: "X",
      maxTags: -1,
      maxTagsErr: function(max_tags) { alert("A maximum of "+max_tags+" tags can be added!"); },
      beforeTagAdd: function(tag_to_add) {},
      afterTagAdd: function(added_tag) {}
    } 
    if (options) {
      options = jQuery.extend(defaults, options);
    } else {
      options = defaults;
    }
    options.tagInputClassName = ( options.tagInputClassName != '' ) ? options.tagInputClassName + ' ' : '';
    options.tagButtonClassName = ( options.tagButtonClassName != '' ) ? options.tagButtonClassName + ' ' : '';
//  Hide Element
    var $elements = this;
    if($elements.length < 1) return;
    $elements.each(function(){
      var uuid = Math.round( Math.random()*0x10000 ).toString(16) + Math.round( Math.random()*0x10000 ).toString(16);
      var $element = jQuery(this);
      $element.hide();
      try {
        var options_from_attribute = jQuery.parseJSON($element.attr(options.dropdownOptionsAttribute));
        options = jQuery.extend(options_from_attribute, options);
      } catch(e) {
        console.log(e);
      }
      if($element.is(":disabled")) 
        options.readonly = true;
      if( (jQuery.isArray($element)) && $element[0].hasAttribute("readonly") )
        options.readonly = true
  //  Create DOM Elements
      if( (options.enableDropdown) && options.dropdownSource() != null ) {
        if(options.dropdownSource().jquery) {
          var $tag_input_elem = (options.readonly) ? '' : options.dropdownSource();
          $tag_input_elem.attr("id", options.className+'-input-'+uuid);
          $tag_input_elem.addClass(options.className+'-input');
        } else {
          var tag_dropdown_items_obj = jQuery.parseJSON(options.dropdownSource());
          var tag_dropdown_options = new Array('<option value=""></option>');
          jQuery.each(tag_dropdown_items_obj, function(i, v){
            if((jQuery.isArray(v)) && v.length == 2 ) {
              tag_dropdown_options.push( '<option value="'+v[0]+'">'+v[1]+'</option>' );
            } else if ( !jQuery.isArray(v) ) {
              tag_dropdown_options.push( '<option value="'+i+'">'+v+'</option>' );
            }
          });
          var tag_dropdown = '<select class="'+options.tagInputClassName+' '+options.className+'-input" id="'+options.className+'-input-'+uuid+'">'+tag_dropdown_options.join("")+'</select>';
          var $tag_input_elem = (options.readonly) ? '' : jQuery(tag_dropdown);
        }
      } else {
        var $tag_input_elem = (options.readonly) ? '' : jQuery('<input type="text" class="'+options.tagInputClassName+' '+options.className+'-input" value="" id="'+options.className+'-input-'+uuid+'" />');
      }
      var $tag_add_elem = (options.readonly) ? '' : jQuery('<a href="javascript:void(0)" class="'+options.tagButtonClassName+''+options.className+'-add-tag" id="'+options.className+'-add-tag-'+uuid+'">'+options.tagButtonTitle+'</a>');
      var $tag_list_elem = jQuery('<span class="'+options.className+'-list" id="'+options.className+'-list-'+uuid+'"></span>');
      var $tagBox = jQuery('<span class="'+options.className+'-container"></span>').append($tag_input_elem).append($tag_add_elem).append($tag_list_elem);
      $element.before($tagBox);
      $element.addClass("jQTagBox");
      $element.unbind('reloadTagBox');
      $element.bind('reloadTagBox', function(){
        $tagBox.remove();
        $element.tagBox(options);
      });     
  //  Generate Tags List from Input item
      generate_tags_list( get_current_tags_list() );
      if(!options.readonly) {
        $tag_add_elem.click(function() {
          var selected_tag = $tag_input_elem.val();
          options.beforeTagAdd(selected_tag);
          add_tag(selected_tag);
          if($tag_input_elem.is("select")) {
            $tag_input_elem.find('option[value="'+selected_tag+'"]').attr("disabled", "disabled");
          }
          $tag_input_elem.val('');
          options.afterTagAdd(selected_tag);
        });
        $tag_input_elem.keypress(function(e) {
          var code = (e.keyCode ? e.keyCode : e.which);
          var this_val = jQuery(this).val();
          if(code==13 || (code == options.separator.charCodeAt(0) && options.completeOnSeparator) ) {
            $tag_add_elem.trigger("click");
            return false;
          }
        });
        if( options.completeOnBlur ) {
          $tag_input_elem.blur(function() {
            if(jQuery(this).val() != "")
              $tag_add_elem.trigger("click");
          });
        }
        jQuery('.'+options.className+'-remove-'+uuid).live( "click", function () {
          if(options.confirmRemoval) {
            var c = confirm(options.confirmRemovalText);
            if(!c) return false;
          }
          var tag_item = jQuery(this).attr('rel');
          if($tag_input_elem.is("select")) {
            $tag_input_elem.find('option[value="'+tag_item+'"]').removeAttr("disabled");
          }
          $tag_input_elem.val('');
          remove_tag(tag_item);
        });
      }
  //  Methods
      function separator_encountered(val) {
        return (val.indexOf( options.separator ) != "-1") ? true : false;
      }
      function get_current_tags_list() {
        var tags_list = $element.val().split(options.separator);
        tags_list = jQuery.map(tags_list, function (item) { return jQuery.trim(item); });
        return tags_list;
      }
      function generate_tags_list(tags_list) {
        var tags_list = jQuery.unique( tags_list.sort() ).sort();
        $tag_list_elem.html('');
        jQuery.each(tags_list, function(key, val) {
          if(val != "") {
            var remove_tag_link = (options.readonly) ? '' : '<a href="javascript:void(0)" class="'+options.className+'-remove '+options.className+'-remove-'+uuid+'" title="Remove Tag" rel="'+val+'">'+options.removeTagText+'</a>';
            if((options.enableDropdown) && jQuery('#'+options.className+'-input-'+uuid).find("option").length > 0) {
              var display_val = jQuery('#'+options.className+'-input-'+uuid).find("option[value='"+val+"']").text();
            } else {
              var display_val = val;
            }
            $tag_list_elem.append('<span class="'+options.className+'-item"><span class="'+options.className+'-bullet">&bull;</span><span class="'+options.className+'-item-content">'+remove_tag_link+''+display_val+'</span></span>');                        
          }
        });
        $element.val(tags_list.join(options.separator));
      }
      function add_tag(new_tag_items) {
        var tags_list = get_current_tags_list();
        new_tag_items = new_tag_items.split(options.separator);
        new_tag_items = jQuery.map(new_tag_items, function (item) { return jQuery.trim(item); });
        tags_list = tags_list.concat(new_tag_items);
        tags_list = jQuery.map( tags_list, function(item) { if(item != "") return item } );
        if( tags_list.length > options.maxTags && options.maxTags != -1 ) {
          options.maxTagsErr(options.maxTags);
          return;
        }
        generate_tags_list(tags_list);
      }
      function remove_tag(old_tag_items) {
        var tags_list = get_current_tags_list();
        old_tag_items = old_tag_items.split(options.separator);
        old_tag_items = jQuery.map(old_tag_items, function (item) { return jQuery.trim(item); });
        jQuery.each( old_tag_items, function(key, val) {            
          tags_list = jQuery.grep(tags_list, function(value) { return value != val; })  
        });
        generate_tags_list(tags_list);
      }
    });
  } 
})(jQuery);
<div class="row">
      <label for="jquery-tagbox-text">Text TagBox (Comma Separated)</label>
      <input id="jquery-tagbox-text" type="text" />
</div>
afterTagAdd: function() {
   $.cookie('tags', this.get_current_tags_list().join(','));
   added_tag();
}

afterTagRemove: function() {
   $.cookie('tags', this.get_current_tags_list().join(','));
}
tagBox.add_tag($.cookie('tags'));