⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zpautocomplete.js

📁 zapatec suite 最新版 20070204,非常棒的ajax widgets 工具包
💻 JS
字号:
/* * * Copyright (c) 2004-2005 by Zapatec, Inc. * http://www.zapatec.com * 1700 MLK Way, Berkeley, California, * 94709, U.S.A. * All rights reserved. * * */Zapatec.AutoComplete=function(oArg){Zapatec.AutoComplete.SUPERconstructor.call(this,oArg);};Zapatec.inherit(Zapatec.AutoComplete,Zapatec.Widget);Zapatec.AutoComplete.prototype.init=function(oArg){Zapatec.AutoComplete.SUPERclass.init.call(this,oArg);};Zapatec.AutoComplete.prototype.reconfigure=function(oArg){var aFields=this.config.fields;if(typeof oArg.fields!='undefined'&&(aFields instanceof Array)){var iFields=aFields.length;var iField;for(iField=0;iField<iFields;iField++){this.removeField(aFields[iField]);}}Zapatec.AutoComplete.SUPERclass.reconfigure.call(this,oArg);};Zapatec.AutoComplete.prototype.configure=function(oArg){this.defineConfigOption('keywordLength',3);this.defineConfigOption('fields',[]);this.defineConfigOption('dataOnDemand',false);this.defineConfigOption('convertTip');this.defineConfigOption('selectTip');this.defineConfigOption('width');this.defineConfigOption('height');this.defineConfigOption('overflow','hidden');Zapatec.AutoComplete.SUPERclass.configure.call(this,oArg);var oConfig=this.config;oConfig.keywordLength=parseInt(oConfig.keywordLength);if(isNaN(oConfig.keywordLength)||oConfig.keywordLength<1){oConfig.keywordLength=3;}if(oConfig.width&&oConfig.width==parseInt(oConfig.width)){oConfig.width+='px';}if(oConfig.height&&oConfig.height==parseInt(oConfig.height)){oConfig.height+='px';}if(oConfig.fields instanceof Array){var aFields=oConfig.fields;var iFields=aFields.length;var iField;for(iField=0;iField<iFields;iField++){this.addField(aFields[iField]);}}this.field=null;this.activeTipId=null;this.tip=null;this.data=null;this.cache={};};Zapatec.AutoComplete.prototype.addField=function(oField){oField=Zapatec.Widget.getElementById(oField);if(!oField||typeof oField.value=='undefined'){return;}oField.zpAutoCompleteId=this.id;oField.zpAutocompleteOrig=oField.getAttribute('autocomplete');oField.setAttribute('autocomplete','off');if(!this.config.customEvents){var oUtils=Zapatec.Utils;var oAutoComplete=Zapatec.AutoComplete;oUtils.addEvent(oField,'focus',oAutoComplete.onFocus);oUtils.addEvent(oField,'keydown',oAutoComplete.onKeydown);oUtils.addEvent(oField,'keyup',oAutoComplete.onKeyup);oUtils.addEvent(oField,'keypress',oAutoComplete.onKeypress);oUtils.addEvent(oField,'blur',oAutoComplete.onBlur);}};Zapatec.AutoComplete.prototype.removeField=function(oField){oField=Zapatec.Widget.getElementById(oField);if(!oField){return;}var undef;oField.zpAutoCompleteId=undef;oField.setAttribute('autocomplete',oField.zpAutocompleteOrig);oField.zpAutocompleteOrig=null;if(!this.config.customEvents){var oUtils=Zapatec.Utils;var oAutoComplete=Zapatec.AutoComplete;oUtils.removeEvent(oField,'focus',oAutoComplete.onFocus);oUtils.removeEvent(oField,'keydown',oAutoComplete.onKeydown);oUtils.removeEvent(oField,'keyup',oAutoComplete.onKeyup);oUtils.removeEvent(oField,'keypress',oAutoComplete.onKeypress);oUtils.removeEvent(oField,'blur',oAutoComplete.onBlur);}};Zapatec.AutoComplete.onFocus=function(oEvent){var oField=Zapatec.Utils.getTargetElement(oEvent);if(oField){Zapatec.Widget.callMethod(oField.zpAutoCompleteId,'onFocus',{field:oField});}};Zapatec.AutoComplete.prototype.onFocus=function(oArg){this.field=null;if(!oArg){return;}var oField=oArg.field;if(!oField||oField.zpAutoCompleteId!=this.id){return;}this.field=oField;};Zapatec.AutoComplete.onBlur=function(oEvent){var oField=Zapatec.Utils.getTargetElement(oEvent);if(oField){setTimeout(function(){Zapatec.Widget.callMethod(oField.zpAutoCompleteId,'onBlur',{field:oField});},0);}};Zapatec.AutoComplete.prototype.onBlur=function(oArg){if(!oArg){return;}var oField=oArg.field;if(!oField){return;}var oContent=this.content;if(oContent&&oContent.zpACClicked){oContent.zpACClicked=null;oField.focus();return;}if(!this.tip){this.selectTip({field:oField,i:this.activeTipId*1});}};Zapatec.AutoComplete.onKeydown=function(oEvent){var oField=Zapatec.Utils.getTargetElement(oEvent);if(oField){Zapatec.Widget.callMethod(oField.zpAutoCompleteId,'onKeydown',{event:oEvent});}};Zapatec.AutoComplete.prototype.onKeydown=function(oArg){if(!oArg){return;}var oEvent=oArg.event;if(!oEvent){return;}switch(oEvent.keyCode){case 27:this.hide();Zapatec.Utils.stopEvent(oEvent);break;case 38:this.gotoPrevTip();Zapatec.Utils.stopEvent(oEvent);break;case 40:this.gotoNextTip();Zapatec.Utils.stopEvent(oEvent);break;}};Zapatec.AutoComplete.onKeyup=function(oEvent){var oField=Zapatec.Utils.getTargetElement(oEvent);if(oField){Zapatec.Widget.callMethod(oField.zpAutoCompleteId,'onKeyup',{field:oField,event:oEvent});}};Zapatec.AutoComplete.prototype.onKeyup=function(oArg){if(!oArg){return;}var oField=oArg.field;if(!oField){return;}var sKeyword=oField.value;if(typeof sKeyword=='undefined'){return;}var oEvent=oArg.event;if(!oEvent){return;}switch(oEvent.keyCode){case 27:return;case 38:return;case 40:return;}var iLen=sKeyword.length;if(iLen>=this.config.keywordLength){this.loadData({keyword:sKeyword});}else if(!iLen){this.hide();}};Zapatec.AutoComplete.onKeypress=function(oEvent){var oField=Zapatec.Utils.getTargetElement(oEvent);if(oField){Zapatec.Widget.callMethod(oField.zpAutoCompleteId,'onKeypress',{field:oField,event:oEvent});}};Zapatec.AutoComplete.prototype.onKeypress=function(oArg){if(!oArg){return;}var oField=oArg.field;if(!oField){return;}var oEvent=oArg.event;if(!oEvent){return;}switch(oEvent.keyCode){case 13:if(!this.tip&&typeof this.activeTipId=='number'){this.selectTip({field:oField,i:this.activeTipId});Zapatec.Utils.stopEvent(oEvent);}}};Zapatec.AutoComplete.prototype.loadData=function(oArg){if(this.config.dataOnDemand){if(typeof oArg!='object'){oArg={};}}Zapatec.AutoComplete.SUPERclass.loadData.call(this,oArg);};Zapatec.AutoComplete.prototype.loadDataJson=function(oData){if(!(oData instanceof Object)){oData={};}if(!(oData.tips instanceof Array)){oData.tips=[];}this.data=oData;this.show();};Zapatec.AutoComplete.prototype.show=function(){this.hide();var oData=this.data;if(!oData){return;}var aTips=oData.tips;if(!(aTips instanceof Array)){return;}var iTips=aTips.length;if(!iTips){return;}var oField=this.field;if(!oField||!oField.parentNode){return;}var oConfig=this.config;this.activeTipId=null;this.tip=null;var oContainer=this.container;var oContent=this.content;var oContainerStyle,oContentStyle;if(!oContainer){oContainer=this.container=Zapatec.Utils.createElement('div');oContainerStyle=oContainer.style;oContainerStyle.position='absolute';oContainerStyle.display='none';oField.parentNode.insertBefore(oContainer,oField);oContainerStyle.top=Zapatec.Utils.getElementOffset(oField).top+oField.offsetHeight+'px';var oOffset=Zapatec.Utils.getElementOffset(oField);oContainerStyle.top=oOffset.top+oField.offsetHeight+'px';oContainerStyle.left=oOffset.left+'px';this.wch=Zapatec.Utils.createWCH(oContainer);if(this.wch){this.wch.style.zIndex=-1;}oContent=this.content=Zapatec.Utils.createElement('div',oContainer);oContentStyle=oContent.style;oContent.className=this.getClassName({prefix:'zpAC'});if(oConfig.width){if(oConfig.width=='auto'){oContentStyle.width=oField.offsetWidth+'px';}else{oContentStyle.width=oConfig.width;}}if(oConfig.height){oContentStyle.height=oConfig.height;}oContentStyle.overflow=oConfig.overflow;oContent.setAttribute('onmousedown','this.zpACClicked=true');}else{oContainerStyle=oContainer.style;if(oContainer.parentNode!=oField.parentNode){oField.parentNode.insertBefore(oContainer,oField);var oOffset=Zapatec.Utils.getElementOffset(oField);oContainerStyle.top=oOffset.top+oField.offsetHeight+'px';oContainerStyle.left=oOffset.left+'px';}}var aHtml=[];var sId=this.id.toString();var fConvertTip=oConfig.convertTip;var iTip,oTip;for(iTip=0;iTip<iTips;iTip++){oTip=aTips[iTip];aHtml.push('<div id="zpAC');aHtml.push(sId);aHtml.push('Tip');aHtml.push(iTip);aHtml.push('" class="zpACTip');if(iTip%2==1){aHtml.push(' zpACTipOdd');}else{aHtml.push(' zpACTipEven');}aHtml.push('" onmousedown="Zapatec.Widget.callMethod(');aHtml.push(sId);aHtml.push(",'selectTip',{i:");aHtml.push(iTip);aHtml.push('})" onmouseover="Zapatec.Widget.callMethod(');aHtml.push(sId);aHtml.push(",'setActiveTip',");aHtml.push(iTip);aHtml.push(')" onmouseout="Zapatec.Widget.callMethod(');aHtml.push(sId);aHtml.push(",'resetActiveTip')\">");if(typeof fConvertTip=='function'){aHtml.push(fConvertTip(oTip));}else{aHtml.push(oTip+'');}aHtml.push('</div>');}oContent.innerHTML+=aHtml.join('');oContainerStyle.display='';Zapatec.Utils.setupWCH(this.wch,0,0,oContainer.offsetWidth,oContainer.offsetHeight);};Zapatec.AutoComplete.prototype.hide=function(){this.activeTipId=null;if(this.container){this.container.style.display='none';this.content.innerHTML='';}};Zapatec.AutoComplete.prototype.gotoNextTip=function(){if(!this.data||!(this.data.tips instanceof Array)||!this.data.tips.length){return;}var iTip=typeof this.activeTipId=='number'?this.activeTipId+1:0;if(iTip>=this.data.tips.length){iTip=0;}this.setActiveTip(iTip);};Zapatec.AutoComplete.prototype.gotoPrevTip=function(){if(!this.data||!(this.data.tips instanceof Array)||!this.data.tips.length){return;}var iTip=typeof this.activeTipId=='number'?this.activeTipId-1:this.data.tips.length-1;if(iTip<0){iTip=this.data.tips.length-1;}this.setActiveTip(iTip);};Zapatec.AutoComplete.prototype.setActiveTip=function(iTip){this.resetActiveTip();if(!this.data||!(this.data.tips instanceof Array)||typeof this.data.tips[iTip]=='undefined'){return;}this.activeTipId=iTip;var oDiv=document.getElementById('zpAC'+this.id+'Tip'+iTip);if(oDiv&&oDiv.className.indexOf('zpACTipActive')==-1){if(oDiv.className.indexOf('zpACTipOdd')==-1){oDiv.className+=' zpACTipActive zpACTipActiveEven';}else{oDiv.className+=' zpACTipActive zpACTipActiveOdd';}}};Zapatec.AutoComplete.prototype.resetActiveTip=function(){if(typeof this.activeTipId!='number'){return;}var oDiv=document.getElementById('zpAC'+this.id+'Tip'+this.activeTipId);if(oDiv&&oDiv.className.indexOf('zpACTipActive')!=-1){oDiv.className=oDiv.className.replace(/ zpACTipActive[^ ]*/g,'');}this.activeTipId=null;};Zapatec.AutoComplete.prototype.selectTip=function(oArg){this.hide();if(!oArg){return;}var oField=oArg.field;if(!oField){oField=this.field;if(!oField){return;}}var iTip=oArg.i;if(typeof iTip!='number'){return;}var oData=this.data;if(!oData){return;}var aTips=oData.tips;if(!(aTips instanceof Array)){return;}var oTip=aTips[iTip];if(!oTip){return;}this.tip=oTip;var oConfig=this.config;if(typeof oConfig.selectTip=='function'){oConfig.selectTip(oTip);}else if(oField&&typeof oConfig.convertTip=='function'){oField.value=oConfig.convertTip(oTip);}else if(oField){oField.value=oTip+'';}};Zapatec.Utils.addEvent(window, 'load', Zapatec.Utils.checkActivation);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -