mirror of
https://github.com/wahyd4/jQuery-Tags-Input.git
synced 2026-08-09 04:46:44 +10:00
1 line
5.2 KiB
JavaScript
1 line
5.2 KiB
JavaScript
(function(d){var a=new Array();var c=new Array();var b=false;d.fn.addTag=function(f,e){var e=jQuery.extend({focus:false,callback:true},e);this.each(function(){id=d(this).attr("id");var g=d(this).val().split(a[id]);if(g[0]==""){g=new Array()}f=jQuery.trim(f);if(e.unique){skipTag=d(g).tagExist(f)}else{skipTag=false}if(f!=""&&skipTag!=true){d("<span>").addClass("tag").append(d("<span>").text(f).append(" "),d("<a>",{href:"#",title:"Removing tag",text:"x"}).click(function(){return d("#"+id).removeTag(escape(f))})).insertBefore("#"+id+"_addTag");g.push(f);d("#"+id+"_tag").val("");if(e.focus){d("#"+id+"_tag").focus()}else{d("#"+id+"_tag").blur()}if(e.callback&&c[id]&&c[id]["onAddTag"]){var j=c[id]["onAddTag"];j(f)}if(c[id]&&c[id]["onChange"]){var h=g.length;var j=c[id]["onChange"];j(d(this),g[h])}}d.fn.tagsInput.updateTagsField(this,g)});return false};d.fn.removeTag=function(e){e=unescape(e);this.each(function(){id=d(this).attr("id");var g=d(this).val().split(a[id]);d("#"+id+"_tagsinput .tag").remove();str="";for(i=0;i<g.length;i++){if(g[i]!=e){str=str+a[id]+g[i]}}d.fn.tagsInput.importTags(this,str);if(c[id]&&c[id]["onRemoveTag"]){var h=c[id]["onRemoveTag"];h(e)}});return false};d.fn.tagExist=function(e){if(jQuery.inArray(e,d(this))==-1){return false}else{return true}};d.fn.importTags=function(e){d("#"+id+"_tagsinput .tag").remove();d.fn.tagsInput.importTags(this,e)};d.fn.tagsInput=function(e){var f=jQuery.extend({interactive:true,defaultText:"add a tag",minChars:0,width:"300px",height:"100px",hide:true,delimiter:",",autocomplete:{},unique:true,removeWithBackspace:true,placeholderColor:"#666666"},e);this.each(function(){if(f.hide){d(this).hide()}id=d(this).attr("id");data=jQuery.extend({pid:id,real_input:"#"+id,holder:"#"+id+"_tagsinput",input_wrapper:"#"+id+"_addTag",fake_input:"#"+id+"_tag"},f);a[id]=data.delimiter;if(f.onAddTag||f.onRemoveTag||f.onChange){c[id]=new Array();c[id]["onAddTag"]=f.onAddTag;c[id]["onRemoveTag"]=f.onRemoveTag;c[id]["onChange"]=f.onChange}var g='<div id="'+id+'_tagsinput" class="tagsinput"><div id="'+id+'_addTag">';if(f.interactive){g=g+'<input id="'+id+'_tag" value="" data-default="'+f.defaultText+'" />'}g=g+'</div><div class="tags_clear"></div></div>';d(g).insertAfter(this);d(data.holder).css("width",f.width);d(data.holder).css("height",f.height);if(d(data.real_input).val()!=""){d.fn.tagsInput.importTags(d(data.real_input),d(data.real_input).val())}if(f.interactive){d(data.fake_input).val(d(data.fake_input).attr("data-default"));d(data.fake_input).css("color",f.placeholderColor);d(data.holder).bind("click",data,function(h){d(h.data.fake_input).focus()});d(data.fake_input).bind("focus",data,function(h){if(d(h.data.fake_input).val()==d(h.data.fake_input).attr("data-default")){d(h.data.fake_input).val("")}d(h.data.fake_input).css("color","#000000")});if(f.autocomplete_url!=undefined){autocomplete_options={source:f.autocomplete_url};for(attrname in f.autocomplete){autocomplete_options[attrname]=f.autocomplete[attrname]}d(data.fake_input).autocomplete(autocomplete_options).bind("autocompleteselect",data,function(h,j){b=true;d(h.data.real_input).addTag(j.item.value,{focus:true,unique:(f.unique)});return false});d(data.fake_input).bind("blur",data,function(h){setTimeout(function(){if(b==true){b=false;return false}if(d(h.data.fake_input).val()!=d(h.data.fake_input).attr("data-default")){if((h.data.minChars<=d(h.data.fake_input).val().length)&&(!h.data.maxChars||(h.data.maxChars>=d(h.data.fake_input).val().length))){d(h.data.real_input).addTag(d(h.data.fake_input).val(),{focus:false,unique:(f.unique)})}}d(h.data.fake_input).val(d(h.data.fake_input).attr("data-default"));d(h.data.fake_input).css("color",f.placeholderColor)},100);return false})}else{d(data.fake_input).bind("blur",data,function(h){var j=d(this).attr("data-default");if(d(h.data.fake_input).val()!=""&&d(h.data.fake_input).val()!=j){if((h.data.minChars<=d(h.data.fake_input).val().length)&&(!h.data.maxChars||(h.data.maxChars>=d(h.data.fake_input).val().length))){d(h.data.real_input).addTag(d(h.data.fake_input).val(),{focus:true,unique:(f.unique)})}}else{d(h.data.fake_input).val(d(h.data.fake_input).attr("data-default"));d(h.data.fake_input).css("color",f.placeholderColor)}return false})}d(data.fake_input).bind("keypress",data,function(h){if(h.which==h.data.delimiter.charCodeAt(0)||h.which==13){if((h.data.minChars<=d(h.data.fake_input).val().length)&&(!h.data.maxChars||(h.data.maxChars>=d(h.data.fake_input).val().length))){d(h.data.real_input).addTag(d(h.data.fake_input).val(),{focus:true,unique:(f.unique)})}return false}});data.removeWithBackspace&&d(data.fake_input).bind("keydown",function(j){if(j.keyCode==8&&d(this).val()==""){j.preventDefault();var h=d(this).closest(".tagsinput").find(".tag:last").text();var k=d(this).attr("id").replace(/_tag$/,"");h=h.replace(/[\s]+x$/,"");d("#"+k).removeTag(escape(h));d(this).trigger("focus")}});d(data.fake_input).blur()}return false});return this};d.fn.tagsInput.updateTagsField=function(f,e){id=d(f).attr("id");d(f).val(e.join(a[id]))};d.fn.tagsInput.importTags=function(h,j){d(h).val("");id=d(h).attr("id");var e=j.split(a[id]);for(i=0;i<e.length;i++){d(h).addTag(e[i],{focus:false,callback:false})}if(c[id]&&c[id]["onChange"]){var g=c[id]["onChange"];g(h,e[i])}}})(jQuery); |