/**jQuery插件:标记自动完成文本输入*1.5.0版**版权所有(c)2009 James Smith(网址:http://loopj.com)*根据GPL和MIT许可证联合许可,*选择最适合你的项目!**/(函数($){//默认设置var DEFAULT_SETTINGS=变量{hintText:“键入搜索词”,noResultsText:“无结果”,searchingText:“正在搜索…”,deleteText:“×”,搜索延迟:300,最小字符数:1,tokenLimit:空,jsonContainer:空,方法:“GET”,contentType:“json”,queryParam:“名称”,标记分隔符:“,”,预防重复:错误,预填充:空,processPrePopulate:错误,animateDropdown:true,onResult:空,onAdd:空,onDelete:空,idPrefix:“标记输入-”};//创建主题时要使用的默认类var DEFAULT_CLASSES=默认类别={tokenList:“token-input-list”,token:“token-input-token”,tokenDelete:“token-input-delete-token”,selectedToken:“token-input-selected-token”,highlightedToken:“token-input-highligghted-token”,下拉:“token-input-dropdown”,dropdownItem:“token-input-dropdon-item”,dropdownItem2:“token-input-dropdown-item2”,selectedDropdownItem:“token-input-selected-dropdown-item”,inputToken:“token-input-input-token”};//输入框位置“枚举”变量位置={之前:0,之后:1,结束:2};//键“enum”var键={后置空间:8,选项卡:9,进入:13,逃生:27,间距:32,页码_ UP:33,第34页,结束:35,主页:36,左图:37,向上:38,右图:39,向下:40,数字_回车:108,逗号:188};//其他公共(公开)方法var方法={init:函数(url或data或function,选项){var设置=$.extend({},DEFAULT_settings,选项||{});返回this.each(函数(){$(this).data(“tokenInputObject”,新的$.TokenList(this,url_or_data_or_function,settings));});},清除:function(){this.data(“tokenInputObject”).clear();返回此;},添加:函数(项){this.data(“tokenInputObject”).add(item);返回此;},删除:函数(项){this.data(“tokenInputObject”).remove(item);返回此;}}//将.tokenInput函数作为插件公开给jQuery$.fn.tokenInput=函数(方法){//方法调用和初始化逻辑if(方法[方法]){return methods[method].apply(this,Array.prototype.slice.call(arguments,1));}其他{return methods.init.apply(this,arguments);}};//每个输入的TokenList类$.TokenList=函数(输入、url_or_data、设置){////初始化////配置数据源if(typeof(url或data)===“字符串”){//设置要查询的urlsettings.url=url或数据;//如果未明确指定交叉域,则对其进行智能猜测if(settings.crossDomain===未定义){if(settings.url.indexOf(“://”)===-1){settings.crossDomain=false;}其他{settings.crossDomain=(location.href.split(/\/+/g)[1]!==settings.url.split(/\/+/g)[1]);}}}else if(typeof(url或data)===“对象”){//设置要搜索的本地数据settings.local_data=url或_data;}//生成类名if(settings.classes){//使用自定义类名settings.classes=$.extend({},DEFAULT_classes,settings.Classs);}else if(设置.theme){//使用带有主题后缀的默认类名settings.classes={};$.each(DEFAULT_CLASSES,函数(键,值){settings.classes[key]=值+“-”+settings.theme;});}其他{settings.classes=默认值classes;}//保存令牌var存储令牌=[];//跟踪列表中的令牌数var标记计数=0;//用于保存数据库命中率的基本缓存var缓存=新$。令牌列表。缓存();//记录超时时间,旧值var超时;var输入值;//创建新文本输入附加关键帧事件var输入框=$(“").css文件({大纲:“无”}).attr(“id”,settings.idPrefix+input.id).单击(函数(){if(settings.tokenLimit===null | | settings.takenLimite!==token_count){show_dropdown_hint();}}).blur(函数(){hide_dropdown();$(this).val(“”);}).bind(“keyup keydown blur update”,resize_input).keydown(功能(事件){var previous_token;var next_token;开关(event.keyCode){外壳键。左图:外壳键。正确的:案例密钥。向上:外壳键。向下:if(!$(this).val()){previous_token=input_token.prev();next_token=input_token.next();if((previous_token.length&&previoustoken.get(0)==selected_token){//检查是否存在上一个/下一个标记并将其选中if(event.keyCode===KEY.LEFT||event.keyCode==KEY.UP){deselect_token($(selected_token),位置。之前);}其他{取消选择标记($(selected_token),位置。之后);}}else if((event.keyCode===KEY.LEFT||event.keyCode==KEY.UP)&&previous_token.length){//我们向左移动,如果存在上一个标记,请选择它select_token($(previous_token.get(0));}else if((event.keyCode===KEY.RIGHT | | event.keyCode==KEY.DOWN)&&next_token.length){//我们正在向右移动,选择下一个标记(如果存在)select_token($(next_token.get(0)));}}其他{var dropdown_item=空;if(event.keyCode===KEY.DOWN||event.keyCode==KEY.RIGHT){dropdown_item=$(selected_dropdown_tem).next();}其他{dropdown_item=$(selected_dropdown_tem).prev();}if(下拉条目长度){选择下拉项(下拉项);}返回false;}断裂;外壳键。退格:previous_token=input_token.prev();if(!$(this).val().length){if(selected_token){delete_token($(selected_token));}else if(previous_token.length){select_token($(previous_token.get(0));}返回false;}else if($(this).val().length===1){hide_dropdown();}其他{//设置一个足够长的超时时间来完成此函数。setTimeout(函数(){do_search();},5);}断裂;外壳键。选项卡:外壳键。输入:外壳键。NUMPAD_ENTER(数字_回车)://逗号不应选择标记CRM-8488//外壳键。逗号:如果(selected_dropdown_item){add_token($(selected_dropdown_item).data(“标记输入”));返回false;}断裂;外壳键。逃生:hide_dropdown();返回true;违约:if(String.fromCharCode(event.which)){//设置一个足够长的超时时间来完成此函数。setTimeout(函数(){do_search();},5);}断裂;}});//保留对原始输入框的引用var hidden_input=$(输入)隐藏().val(“”).focus(函数(){input_box.focus();}).blur(函数(){input_box.blur();});//保留对所选令牌和下拉项的引用var selected_token=空;var selected_token_index=0;var selected_dropdown_item=空;//用于存储令牌项的列表var标记列表=$(“