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

📄 autocomplete.class.inc

📁 国外很不错的一个开源OA系统Group-Office
💻 INC
字号:
<?php/** * @copyright Intermesh 2005 * @author Merijn Schering <mschering@intermesh.nl> * @version $Revision: 1.6 $ $Date: 2006/11/23 15:29:45 $ *   This program is free software; you can redistribute it and/or modify it   under the terms of the GNU General Public License as published by the   Free Software Foundation; either version 2 of the License, or (at your   option) any later version. * @package Framework * @subpackage Controls *//** * Create an form input field *  * @package Framework * @subpackage Controls *  * @access public */require_once($GO_CONFIG->class_path.'base/controls/html_element.class.inc');class autocomplete extends html_element{	var $hidden_input;	var $text_input;	var $container;	var $xml_source;	var $xml_fields;	var $xml_root_element;	var $form_name;	var $submit_on_enter;	var $log=false;	var $lookup_url='';	function get_header()	{		global $GO_CONFIG;				$header = '';				if(!defined('YAHOO_LOADED'))		{			$header= '<script type="text/javascript" src="'.$GO_CONFIG->host.'yui/build/yahoo/yahoo-min.js"></script>'.			'<script type="text/javascript" src="'.$GO_CONFIG->host.'yui/build/dom/dom-min.js"></script>'.			'<script type="text/javascript" src="'.$GO_CONFIG->host.'yui/build/event/event-min.js"></script>'.			'<script type="text/javascript" src="'.$GO_CONFIG->host.'yui/build/connection/connection-min.js"></script>'.			'<script type="text/javascript" src="'.$GO_CONFIG->host.'yui/build/animation/animation-min.js"></script>';			if($this->log)			{				$header .= '<script type="text/javascript" src="'.$GO_CONFIG->host.'yui/build/logger/logger.js"></script>';			}						define('YAHOO_LOADED',true);		}				if(!defined('YAHOO_AC_LOADED'))		{				$header .= '<script type="text/javascript" src="'.$GO_CONFIG->host.'yui/build/autocomplete/autocomplete-min.js"></script>';			define('YAHOO_AC_LOADED',true);		}		$header .= '		<script type="text/javascript">		YAHOO.namespace ("'.$this->attributes['id'].'");		YAHOO.'.$this->attributes['id'].'.ACXml = function(){			var oACDS;			var oAutoComp;			var mylogger;			return {				init: function() {				';				if($this->log)				{					$header .= 'mylogger = new YAHOO.widget.LogReader("'.$this->attributes['id'].'_logger");';				}		$header .= '					oACDS = new YAHOO.widget.DS_XHR("'.$this->xml_source.'",["'.$this->xml_root_element.'"';					$fields=array();					foreach($this->xml_fields as $xml_field=>$form_field)					{						$fields[]=$xml_field;					}					$header .= ',"'.implode('","', $fields).'"';															$header .=']);					oACDS.responseType = YAHOO.widget.DS_XHR.TYPE_XML;					oACDS.queryMatchContains = true;					oACDS.scriptQueryParam = "query";					';										if(!empty($this->scriptQueryAppend))					{						$header .='oACDS.scriptQueryAppend="'.$this->scriptQueryAppend.'";';					}					$header .='					oAutoComp = new YAHOO.widget.AutoComplete("'.$this->text_input->attributes['id'].'","'.$this->container->attributes['id'].'", oACDS);					oAutoComp.queryDelay=0.5;					oAutoComp.autoHighlight = true;					oAutoComp.maxResultsDisplayed=10;										oAutoComp.formatResult = function(oResultItem, sQuery) {											return oResultItem[0];					};					var myHandler = function(type, args, me) {						var oAutoComp = args[0]; // the autocomplete instance						var elListItem = args[1]; // the result list item element						';										$count=0;					foreach ($this->xml_fields as $xml_field=>$form_field)					{						if(!empty($form_field))						{							if($this->overwrite || (isset($this->hidden_input) && $form_field==$this->hidden_input->attributes['name']))							{								$header .= 'document.forms["'.$this->form_name.'"].elements["'.$form_field.'"].value='.									'args[2]['.$count.'];';							}else {								$header .= 'if(document.forms["'.$this->form_name.'"].elements["'.$form_field.'"].value=="" || document.forms["'.$this->form_name.'"].elements["'.$form_field.'"].value=="0")'.								'{document.forms["'.$this->form_name.'"].elements["'.$form_field.'"].value=args[2]['.$count.'];}';							}						}						//$header .= 'alert("'.$form_field.': "+args[2]['.$count.']);';						$count++;					}					if($this->submit_on_enter)					{						$header .= 'document.forms["'.$this->form_name.'"].submit();';					}											$header .= '					}					oAutoComp.itemSelectEvent.subscribe(myHandler);				}';		if(!empty($this->lookup_url))					$header .= ',								lookup: function() {					id = document.forms["'.$this->form_name.'"].elements["'.$this->hidden_input->attributes['name'].'"].value;					if(id>0)					{						document.location="'.$this->lookup_url.'"+id+"&return_to='.urlencode($this->return_to).'";					}				}			';					$header .='};		}();		YAHOO.util.Event.addListener(this,"load",YAHOO.'.$this->attributes['id'].'.ACXml.init);		</script>';							return $header;	}		function add_bound_hidden_value($input_name, $input_value, $lookup_url='', $return_to='')	{		$this->return_to=$return_to;		$this->lookup_url=$lookup_url;		$this->hidden_input = new input('hidden', $input_name, $input_value, false);		$this->text_input->set_attribute('onchange', "document.forms['".$this->form_name."'].elements['".$input_name."'].value=''");	}		function autocomplete($id='autocomplete', $textarea=false, $text_input_name, $text_input_value, 		$form_name, $xml_source, $xml_root_element, $xml_fields, $overwrite_values=true, $submit_on_enter=false, $scriptQueryAppend='')	{				$this->submit_on_enter=$submit_on_enter;		$this->overwrite=$overwrite_values;		$this->form_name=$form_name;		$this->xml_source=$xml_source;		$this->xml_fields=$xml_fields;		$this->xml_root_element=$xml_root_element;		$this->scriptQueryAppend = $scriptQueryAppend;				$this->set_attribute('id', $id);		$this->set_attribute('class','autocomplete');		$this->tagname = 'div';		$this->set_linebreak("\n");				if($textarea)		{			$this->text_input = new textarea($text_input_name,$text_input_value);		}else {			$this->text_input = new input('text',$text_input_name,$text_input_value,false);			$this->text_input->set_attribute('autocomplete', 'off');		}		$this->text_input->set_attribute('onfocus', 'this.select();');		//$this->text_input->set_attribute('onchange', 'YAHOO.'.$this->attributes['id'].'.ACXml.changed();');		$this->text_input->set_attribute('id',$id.'_text_input');		$this->text_input->set_attribute('class','autocomplete_input');		$this->container = new html_element('div');		$this->container->set_attribute('id', $id.'_container');		$this->container->set_attribute('class','autocomplete_container');					}	function get_html()	{		if(isset($this->hidden_input))		{			$this->add_html_element($this->hidden_input);				}		$this->add_html_element($this->text_input);						if(!empty($this->lookup_url))		{			$img = new image('magnifier');			$img->set_attribute('align','absmiddle');			$img->set_attribute('style','border:0px;');						$link = new hyperlink('javascript:YAHOO.'.$this->attributes['id'].'.ACXml.lookup();', $img->get_html());			$this->add_html_element($link);						}		$this->add_html_element($this->container);				if($this->log)		{			$div = new html_element('div');			$div->set_attribute('id',$this->attributes['id'].'_logger');			$this->add_html_element($div);		}				return $this->get_header().parent::get_html();	}}

⌨️ 快捷键说明

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