Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

flavialieggio

auto completar

Recommended Posts

ae galera..teria como postar o script rodando certinho? cada codigo corrigido e tals? eu sou um que to precisando de um desse!!!Parabens a todos que colaboraram nesse code!![]´z

Compartilhar este post


Link para o post
Compartilhar em outros sites

Flavia, não entendo muito de ajax, tbm estou procurando uma soluão identica a tua, para um sistema administrativo q estou tentando desenvolver. Bom, não é muito mas consegui este site http://www.sosdesigners.com/colunas-114.html que contém um exemplo bem bacana. Só não está funcionando a parte de selecionar o item na coluna de pesquisa.

 

Como te disse, não conheço muito bem ajax, se conseguir resolver este problema, me informe.

 

Abraços

Louvair

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola pessoal

Desculpem por nao ter postado os codigos antes. Segue abaixo os tres codigos simples montdos por mim e pelo micox!

 

INDEX.PHP

<html> <head> <title>BUSCA DINÂMICA</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script src="script1.js"></script> <script language="javascript">function pesquisa(e,valor){	/* crossbrowser elcio */	if(typeof(e)=='undefined')var e=window.event	source=e.target?e.target:e.srcElement	if(source.nodeType == 3)source = source.parentNode	/* fim crossbrowser */	/* capturando se o cara digitar seta pra baixo */	if(e.keyCode==40){ //seta pra baixo		pega("pagina").selectedIndex = 0;		pega("pagina").focus();		return true;	}	/* fim capturando */		//FUNÇÃO QUE MONTA A URL E CHAMA A FUNÇÃO AJAX	url="busca_nome.php?valor="+valor;	ajaxGet(url,pega("pagina"),true)	}function altera(e,quem){	/* crossbrowser elcio */	if(typeof(e)=='undefined')var e=window.event	source=e.target?e.target:e.srcElement	if(source.nodeType == 3)source = source.parentNode	/* fim crossbrowser */	/* capturando se o cara digitar seta pra baixo */	if(e.keyCode==13 || e.keyCode==32){ //enter ou espaço		alteraReal(quem);	}	/* fim capturando */}function alteraReal(quem){	pega("nome").value = quem.value;	pega("nome").focus();	quem.style.visibility="hidden";}</script><style>* { padding:0; margin:0;}#tudo {  width:650px;  background-color:#f7f7f7;  font-size:10px;    font-weight: bold;  font-family: Verdana, Arial, Helvetica, sans-serif;}h2 {  font-size:10px;    color:#FF0000;  text-align:center;  background-color:#CCCCCC;}label {  cursor:pointer;}#nome {  width:250px;}#pagina {  position:absolute; /* isso aqui tem que ficar */  border:1px solid green;  height:120px;  visibility:hidden;}</style><body><div id="tudo"><h2><- BUSCA DINÂMICA -></h2><label for="nome">DIGITE AQUI O NOME DA PESSOA:</label><input type="text" id="nome" name="nome" onkeyup="pesquisa(event,this.value)" /><select name="pagina" id="pagina" onkeyup="altera(event,this)" onblur="alteraReal(this)" size="4"></select></div> <!-- fim da div tudo --></body> </html>

SCRIPT.JS

// JavaScript Document // FUNÇÃO RESPONSÁVEL DE CONECTAR A UMA PAGINA EXTERNA NO NOSSO CASO A BUSCA_NOME.PHP // E RETORNAR OS RESULTADOS function pega(quem){ return document.getElementById(quem);}function ajaxGet(url,elemento_retorno,exibe_carregando){/****** * ajaxGet - Coloca o retorno de uma url em um elemento qualquer* Use a vontade mas coloque meu nome nos créditos. Dúvidas, me mande um email.* Versão: 1.2 - 20/04/2006* Autor: Micox - Náiron José C. Guimarães - micoxjcg@yahoo.com.br* Parametros:* url: string; elemento_retorno: object||string; exibe_carregando:boolean*  - Se elemento_retorno for um elemento html (inclusive inputs e selects),*	exibe o retorno no innerHTML / value / options do elemento*  - Se elemento_retorno for o nome de uma variavel*	(o nome da variável deve ser declarado por string, pois será feito um eval)*	a função irá atribuir o retorno à variável ao receber a url.*******/	var ajax1 = pegaAjax();	if(ajax1){		url = antiCacheRand(url)		ajax1.onreadystatechange = ajaxOnReady		ajax1.open("GET", url ,true);		ajax1.setRequestHeader("Cache-Control", "no-cache");		ajax1.setRequestHeader("Pragma", "no-cache");		if(false){ put("Carregando ...")	}		ajax1.send(null)		return true;	}else{		return false;	}	function ajaxOnReady(){		if(ajax1.status == 200){			var texto=ajax1.responseText;			if(texto.indexOf(" ")<0) texto=texto.replace(/\+/g," ");				put(texto);				extraiScript(texto);			/******* adicionei pra voce flavia ***/			pega("pagina").style.width = pega("nome").offsetWidth;			pega("pagina").style.left = pega("nome").offsetLeft + "px";			pega("pagina").style.top = (pega("nome").offsetTop + pega("nome").offsetHeight) + "px";			pega("pagina").style.visibility="visible"			/***** fim autocompletar flavia ***/			}else{				if(false){put("Falha no carregamento. " + httpStatus(ajax1.status));}			}	}	function put(valor){ 		if((typeof(pega("pagina"))).toLowerCase()=="string"){ 			if(valor!="Falha no carregamento"){ 				eval(pega("pagina") + '= unescape("' + escape(valor) + '")')			}		}else if(pega("pagina").tagName.toLowerCase()=="input"){			valor = escape(valor).replace(/\%0D\%0A/g,"")			pega("pagina").value = unescape(valor);		}else if(pega("pagina").tagName.toLowerCase()=="select"){					select_innerHTML(pega("pagina"),valor)		}else if(pega("pagina").tagName){			pega("pagina").innerHTML = valor;		}		}	function pegaAjax(){ 		if(typeof(XMLHttpRequest)!='undefined'){return new XMLHttpRequest();}		var axO=['Microsoft.XMLHTTP','Msxml2.XMLHTTP','Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0'];		for(var i=0;i<axO.length;i++){ try{ return new ActiveXObject(axO[i]);}catch(e){} }		return null;	}	function httpStatus(stat){ 		switch(stat){			case 0: return "Erro desconhecido de javascript";			case 400: return "400: Solicitação incompreensível"; break;			case 403: case 404: return "404: Não foi encontrada a URL solicitada"; break;			case 405: return "405: O servidor não suporta o método solicitado"; break;			case 500: return "500: Erro desconhecido de natureza do servidor"; break;			case 503: return "503: Capacidade máxima do servidor alcançada"; break;			default: return "Erro " + stat + ". Mais informações em http://www.w3.org/Protocols/rfc2616/rfc261...c10.html";		}	}	function antiCacheRand(aurl){		var dt = new Date();		if(aurl.indexOf("?")>=0){			return aurl + "&" + encodeURI(Math.random() + "_" + dt.getTime());		}else{ return aurl + "?" + encodeURI(Math.random() + "_" + dt.getTime());}	}}function select_innerHTML(objeto,innerHTML){/****** * select_innerHTML - altera o innerHTML de um select independente se é FF ou IE* Corrige o problema de não ser possível usar o innerHTML no IE corretamente* Veja o problema em: http://support.microsoft.com/default.aspx?scid=kb;en-us;276228* Use a vontade mas coloque meu nome nos créditos. Dúvidas, me mande um email.* Versão: 1.0 - 06/04/2006* Autor: Micox - Náiron José C. Guimarães - micoxjcg@yahoo.com.br* Parametros:* objeto(tipo object): o select a ser alterado* innerHTML(tipo string): o novo valor do innerHTML*******/	objeto.innerHTML = ""	var selTemp = document.createElement("micoxselect")	var opt;	selTemp.id="micoxselect1"	document.body.appendChild(selTemp)	selTemp = document.getElementById("micoxselect1")	selTemp.style.display="none"	if(innerHTML.toLowerCase().indexOf("<option")<0){		innerHTML = "<option>" + innerHTML + "</option>"	}	innerHTML = innerHTML.replace(/<option/g,"<span").replace(/<\/option/g,"</span")	selTemp.innerHTML = innerHTML	for(var i=0;i<selTemp.childNodes.length;i++){		if(selTemp.childNodes[i].tagName){			opt = document.createElement("OPTION")			for(var j=0;j<selTemp.childNodes[i].attributes.length;j++){				opt.setAttributeNode(selTemp.childNodes[i].attributes[j].cloneNode(true))			}			opt.value = selTemp.childNodes[i].getAttribute("value")			opt.text = selTemp.childNodes[i].innerHTML			if(document.all){ 				objeto.add(opt)			}else{				objeto.appendChild(opt)			}							}		}	document.body.removeChild(selTemp)	selTemp = null}function extraiScript(texto){//Maravilhosa função feita pelo SkyWalker.TO do imastersforum//http:forum.imasters.com.br/index.php?showtopic=165277&	var ini = 0;	while (ini!=-1){		ini = texto.indexOf('<script', ini);		if (ini >=0){			ini = texto.indexOf('>', ini) + 1;			var fim = texto.indexOf('</script>', ini);			codigo = texto.substring(ini,fim);			/**********************			* Alterado por Micox - micoxjcg@yahoo.com.br			* Alterei pois com o eval não executava funções.			***********************/			novo = document.createElement("script")			novo.text = codigo;			document.body.appendChild(novo);		}	}}

BUSCA_NOME.PHP

<?php if(!empty($_GET["valor"])){ 	// O CAMPO VALOR CONTERÁ O QUE O USUARIO DIGITOU ATÉ O MOMENTO.. 	// CONECTA AO BANCO COLOCA PARAMENTROS IP,USUARIO,SENHA 	include ('conexao.php');	$query = "SELECT * FROM nome_da_tabela WHERE nome_do_campo like UPPER('$_GET[valor]%')";	$statement = OCIParse ($conn, $query);	OCIExecute ($statement);	while (OCIFetchInto ($statement, $row, OCI_ASSOC)) {   		//print $row['NU_PROPRIETARIO'];		echo "<option value='".$row['nome_do_campo']."'>".$row['nome_do_campo']."</option>";   		//print $row['DE_PROPRIETARIO'];	}	ocilogoff($conn);}?>

OBS: O arquivo BUSCA_NOME.PHP esta fazendo uma consulta no banco de dados ORACLE. adaptem para o de sua preferencia!

 

Desculpe mais uma vez pela demora

Qualquer duvida postem

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Flávia tudo bom?Valeu pelo seu script.Seguinte, ele ta acusando um erro na linha 34, como eu não sei nada disso, então resolvi postar aqui pra você ver.Veja abaixo

Erro: [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.status]" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: http://localhost/testes_WS/ajxass/script.js :: ajaxOnReady :: line 34" data: no]Arquivo-fonte: http://localhost/testes_WS/ajxass/script.jsLinha: 34

Até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Fabio,Bom este erro no codigo do JS nao sei o que poderia exatamente ser. Quem poderia ajudar mais e o Micox, pois ele que montou esse script.... Se voce puder entrar em contato com ele seria bom... mas de qualquer forma irei pesquisar e tentarei ajudar....Abraçosflavia

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Flávia tudo bom?Valeu pelo seu script.Seguinte, ele ta acusando um erro na linha 34, como eu não sei nada disso, então resolvi postar aqui pra você ver.Veja abaixo

Erro: [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.status]" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: http://localhost/testes_WS/ajxass/script.js :: ajaxOnReady :: line 34" data: no]Arquivo-fonte: http://localhost/testes_WS/ajxass/script.jsLinha: 34

Até mais.
Aqui nos pcs da firma onde trabalho tb deu o mesmo erro.Erro: [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.status]" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: http://url site minha empresa/mutu...autocomplete.js :: ajaxOnReady :: line 34" data: no]Arquivo-fonte: script_autocomplete.jsLinha: 34O Script esta até funcionando! Mas este erro esta me tirando do sério!! Pois ja pesquisei em todo o códigoé parece estar ok.Obs. Testei no IE 6 e claro FIREFOX 1.5.0.7

Compartilhar este post


Link para o post
Compartilhar em outros sites

flavialieggio

 

está dando erro aqui pra mim.

 

fatal error, call to undefined

 

você poderia postar um link pra baixar o script? de forma para mysql e não oracle.

 

Muito obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.