Ir para conteúdo

POWERED BY:

Arquivado

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

Lucia_na

AutoCompletar

Recommended Posts

Ola

Tenho um autoCompletar em javascript.Mas preciso de uma ajuda/idéia. Ve se alguem pode me ajudar.

No textbox do autoCompletar, trago uma lista de cidades(Paises), cadastrados no meu banco. Sendo que esses vou usar em um formulario, juntamente com outras coisas. No momento o textBox traz o nome da cidade juntamente com o pais, mas claro que na hora que eu gravar ele vai gravar o que esta no textBox, ou seja, vai gravar o nome da cidade e do pais. So que eu preciso que grave o codigo dessa cidade, referenciado no meu banco. Alguem pode me ajudar de como poderia no momento que vem o nome da cidade, gravar o codigo correspondente aquela cidade????

Pensei em fazer um campo hidden e até fiz ai com o evento onclick. Dai criei uma funcao valores pra ele jogar o valor no meu campo hidden mas nao funcionou pq sera?

ai vai meu autoCompletar..vai o codigo pra vcs entender..

 

Cidade: input name="sel_cidade" onKeyUp="checkList(this,arvore)" id="textbox1" size="50" onclick="valores();">

input size="5" name="txtCodigo" type="hidden"> //esse é o campo onde criei pra jogar o codigo pra gravar

<%mSQL = "SELECT p.COD_PAIS, c.COD_CIDADE, c.DESCRICAO + ' (' + p.DESCRICAO + ')' AS descricao "mSQL = mSQL & " FROM Paises p INNER JOIN Cidades c ON p.COD_PAIS = c.COD_PAIS "mSQL = mSQL & " order by c.descricao"Set RSPais = Conexao.Execute (mSQL)'**********Para aparecer o autoCompletar***********	 response.write("<script>")	 response.write("arvore = new Array(")		 		while not RSPais.eof			'response.write ("'"&RSPais("descricao").value&"'") CORRETO			'testeeeee						'Response.Write ("'" & replace(RSPais("descricao"),"'"," ") & "','" & RSPais("Cod_Cidade") & "'") 			Response.Write ("'" & replace(RSPais("descricao").Value,"'"," ") & "','" & RSPais("Cod_Cidade").Value&"'")			codCidade = RSPais("Cod_Cidade")  // aqui atribuo o codigo da cidade						RSPais.movenext			if not RSPais.eof then				response.write(", ")			end if		wend			response.write(")")			response.write("</script>")	script>//essa é a funcao pra jogar ..mas nao funcionafunction valores(){document.MyFORM.txtCodigo.value = codCidade;}document.write(''+'#listHolder{position:absolute;border:0;}'+'.list{font-family:verdana;font-size:10;color:#000000;background:;}'+'<\/style>')function checkList(obj,nStr) {var k = event.keyCode;var T = findPosY(obj); //topvar L = findPosX(obj); //leftvar list = document.getElementById('listHolder');if(!list) {var list = document.createElement('DIV');list.id = 'listHolder';document.body.appendChild(list);}list.style.top=(T+obj.offsetHeight);list.style.left=L;list.style.display='none';var txt=obj.value;if (txt) {var str=''if(match){list.innerHTML=strlist.style.display='block'var sel=document.getElementById('selector')if(k=='40') {sel.focus()}if(k=='13'){document.getElementById('listHolder').style.display='none'}}}}function setOption(obj,val){var obj=document.getElementById(obj)obj.value=val;obj.focus()document.getElementById('listHolder').style.display='none'}function findPosX(obj){var curleft=0;if(obj.offsetParent) {while(obj.offsetParent){curleft+=obj.offsetLeftobj=obj.offsetParent;}} else if(obj.x)curleft+=obj.x;return curleft;}function findPosY(obj){var curtop=0;if(obj.offsetParent){while(obj.offsetParent){curtop+=obj.offsetTopobj=obj.offsetParent;}} else if(obj.y)curtop+=obj.y;return curtop;}

obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi muito bem... mas vamos lá. Essa função é uma função javascript certo?

function valores()
{
document.MyFORM.txtCodigo.value = codCidade;
}

codCidade é uma variável ASP certo?

function valores()
{
document.MyFORM.txtCodigo.value = <%=codCidade%>;
}

Será que é isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso mesmo...é uma funcao java script..Fiz o que você sugeriu acima..deu ok...tipo esta jogando o codigo da cidade no campo hidden..so que mais um Problema agora...ele joga sempre o ultimo codigo da cidade(ou seja o ultimo codigo que tenho la no meu banco....) PQ sera que ele faz isso...???tentei dentro da minha funcao java script fazer um While...mas dai ele nem entra no While....//funcao java script para jogar o codigo da cidade em um campo hidden pra eu gravar o codigo..function valores(){ document.MyFORM.sel_cidade.value = <%=codCidade%>; }O que devo fazer nessa situação? Como devo proceder para ele pegar o codigo da cidade que esta sendo escolhida??Obrigada :rolleyes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso acontece pq você está armazenando na variável codCidade todos os valores do código da cidade a cada vez que o while lê os dados. E por isso está ficando gravado o último valor.

 

Pelo que vi você está armazenando nome e código em um array... dentro da função valores tenta fazer uma busca pelo nome da cidade no array, a posição depois dele é a do código. Aí você pega o código e passa para document.MyFORM.txtCodigo.value.

 

Não vou poder te ajudar muito nisso pq não conheço muito bem essa parte de javascript.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim é isso mesmo que esta acontecendo..mas desculpa nao entendi direito sua ideia...como assim fazer uma busca da cidade no array, a posição depois dele é a do código...mas tipo isso fazer dentro do meu javascript ou mudar no proprio asp que tenho.:???obrigada....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso você vai fazer no proprio javascript, pq é nele que você está armazenando todos as cidades e códigos.

 

Quando você selecionar a cidade, você passa como parâmetro para a função valores o nome dela. Ai você pesquisa se existe no array. Caso exista, pelo que vi código acima, o valor depois do nome da cidade é o código. Ai você pega o código e retorna para o input hidden que você criou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola...

consegui fazer o que precisava acima...mas agora estou com outro problema. Veja se alguem pode me ajudar. Vou tentar explicar.

O meu autocompletar, e esta funcionando .

Quando a pessoa seleciona a cidade de destino preciso do codigo desta cidade que busco no banco.

Ate ai tudo bem. Joguei esse codigo em um campo hidden - (cod_cidade).

So que preciso usar esse cod_cidade para achar o pais referente a essa cidade.

So consigo usar o codigo da cidade pra buscar o pais dando um refresh na pagina.

so que isso atrapalha..pq as vezes demora, etc, e nao fica legal.

Tem algum jeito de eu conseguir usar esse cod_cidade que esta no campo hidden sem dar o refresh?

veja o ex. codigo abaixo:

<script>
document.write('<style type="text/css">'+
	   '#listHolder{position:absolute;border:0;}'+
	   '.list{font-family:verdana;font-size:10;color:#000000;background:;}'+
	'<\/style>') 
function checkList(obj,nStr) {

 var k = event.keyCode;
 var T = findPosY(obj); //top
 var L = findPosX(obj); //left
 var list = document.getElementById('listHolder');

 if(!list) {
  var list = document.createElement('DIV');
  list.id = 'listHolder';
  document.body.appendChild(list);
 }
 
 list.style.top=(T+obj.offsetHeight);
 list.style.left=L;
 list.style.display='none';
 
 var txt=obj.value; 
 
 if (txt) {
  var str='<select class="list"'+
	'onclick="setOption(\''+obj.id+'\',this.options[this.selectedIndex].text, this.options[this.selectedIndex].value)"'+
	'onkeyup="if(event.keyCode==13){setOption(\''+obj.id+'\','+
	'this.options[this.selectedIndex].value)};if(event.keyCode==27){'+
	'document.getElementById(\'listHolder\').style.display=\'none\';'+
	'document.getElementById(\''+obj.id+'\').focus()};" id="selector" size="6">'
  var match=false
  for(a=0;a<nStr.length;a++){
  
   if(txt.toLowerCase()==nStr[a].toLowerCase().substring(0,txt.length)){
	match=true
	
	vl = nStr[a].replace(/\'/gi,'?');
	
	option = vl.substring(0, vl.indexOf(" - "))
	vl = vl.substring(vl.indexOf(" - ")+3, vl.length);	
	
	str+=('<option value="'+vl+'">'+option+'</option>')
   }
  }
  str+='</select>'  
  
  if(match){
   list.innerHTML=str   
   list.style.display='block'
   var sel=document.getElementById('selector')  
   
   if(k=='40') {
	  sel.focus()
   }
  
   if(k=='13'){
	  document.getElementById('listHolder').style.display='none'
   }
  }
 }
}

function setOption(obj, text, val){
 var obj=document.getElementById(obj); 
 
 document.MyFORM.sel_cidade.value = val;
 
 obj.value=text;
 obj.focus(); 
 
 document.getElementById('listHolder').style.display='none';

 //document.MyFORM.submit();'aqui que uso o refresh mas nao queria usar
}

function findPosX(obj){
 var curleft=0;
 if(obj.offsetParent) {
 
  while(obj.offsetParent){
   curleft+=obj.offsetLeft
   obj=obj.offsetParent;
  }
 } else if(obj.x)
  curleft+=obj.x;
  return curleft;
}

function findPosY(obj){
 var curtop=0;
 if(obj.offsetParent){
  while(obj.offsetParent){
   curtop+=obj.offsetTop
   obj=obj.offsetParent;
  }
 } else if(obj.y)
  curtop+=obj.y;
  return curtop;
}
</script>

'chamada ao autocompletar

<input name="txtCidade" onKeyUp="checkList(this,arvore)" value="<%=cidadeNome%>" id="textbox1" size="35">
<input size="5" type="text" name="sel_cidade" value="<%=cod_cidade%>">

<%'*****************Pais Selecionado de acordo com a cidade
if 	cod_cidade <> "" or cod_cidade <> 0 then
Dim RSPaisCodigo
mSQL = "SELECT p.COD_PAIS, c.COD_CIDADE, c.Descricao, p.Descricao "	 
mSQL = mSQL & " FROM Paises p INNER JOIN Cidades c ON p.COD_PAIS = c.COD_PAIS " 
mSQL = mSQL & " Where c.COD_CIDADE = " & cod_cidade
mSQL = mSQL & " order by c.descricao" 
'Response.Write(mSQL)									
Set RSPaisCodigo = Conexao.Execute (mSQL)
while not RSPaisCodigo.eof	
sel_pais = RSPaisCodigo("COD_PAIS")
RSPaisCodigo.movenext
wend
end if							 
%>
<input size="5" type="text" name="sel_pais" value="<%=sel_pais%>">

Preciso de ajuda por favor..

Muito obrigada

Luciana

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola...

sim andei procurando um exemplo em ajax..

mas nao consegui fazer ainda... achei alguns no forum..

você tem algum pra me indicar?

 

obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

falou em ajax? Falou Darkdemo!!!

 

lá no sub-forum de ajax vi um parecido com esse, procure lá que você acha... tem um tempo que já vi, mais garanto que está lá ainda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguém me chamou ai ?????? o.O ????

 

Bom, basta fazer uma requisição simples em ajax apontando para a página ASP que faça essa busca, e ai você cria uma div para exibir o resultado dessa requisição.

 

No Fórum de AJAX tem varios exemplos que postei lá.. basta dar uma olhada..

 

Abraços...

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.