Ir para conteúdo

POWERED BY:

Arquivado

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

Gilberto Jr

Duas ou mais Função no OnChange

Recommended Posts

Bom dia;

 

Eu tenho uma função ajax que trás os dados do banco de dados de acordo com o valor que esta no input radio.

 

No imput radio eu estou usando o ONCHANGE para fazer essa verificação. O problema é que não esta funcionando com duas funções. No caso ele esta excutando somente uma.

 

Segue o código ajax

 

ESSA É A FUNÇÃO 1

<script>
function showUser(str) {
  if (str=="") {
    document.getElementById("txtHint1").innerHTML="";
    return;
    document.getElementById("txtHint2").innerHTML="";
    return;
  } 
  if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  } else { // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
      document.getElementById("txtHint1").innerHTML=xmlhttp.responseText;
	  document.getElementById("txtHint2").innerHTML=xmlhttp.responseText;
	  document.getElementById("tiposervico").value = document.getElementById("tiposervico2").value;
	  
    }
  }
  xmlhttp.open("GET","buscaservico.asp?q="+str,true);
  xmlhttp.send();
}
</script>

AGORA A FUNÇÃO 2

<script>
function showUser2(str) {
  if (str=="") {
    document.getElementById("txtHint1").innerHTML="";
    return;
    document.getElementById("txtHint3").innerHTML="";
    return;
  } 
  if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  } else { // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
      document.getElementById("txtHint3").innerHTML=xmlhttp.responseText;
	  
    }
  }
  xmlhttp.open("GET","servicosubitem.asp?q="+str,true);
  xmlhttp.send();
}
</script>

E no input radio esta assim

<input onChange="showUser(this.value);showUser2(this.value)" id="tiposervico2" type="radio" name="site" value="1" />

Ai quando mando executar ele executa somente um função jogando as informações tanto na div txtHint1 e txtHint3

 

O que eu estou fazendo de errado?

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que seu problema não é o onchange em si, mas sim o escopo da variável xmlhttp ambas são globais, e uma está sobrescrevendo a outra, impedindo q os 2 requests sejam executados

 

Além disso, vc pode fazer tudo num único request. Basta formatar a saída em json, ai vc divide os dados para onde quiser.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que seu problema não é o onchange em si, mas sim o escopo da variável xmlhttp ambas são globais, e uma está sobrescrevendo a outra, impedindo q os 2 requests sejam executados

 

Além disso, você pode fazer tudo num único request. Basta formatar a saída em json, ai você divide os dados para onde quiser.

 

Bom dia William

 

Eu posso alterar a variável xmlhttp para xmlhttp2 para uma ficar diferente da outra?

 

E se eu não puder mudar o nome variável tem como você dizer como eu devo fazer essa formatação da saida json?

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia;

 

Fiz dessa forma e funcionou.

 

A primeira eu fiz assim

<script>
function showUser(str,str2) {

  if (str=="") {
    document.getElementById("txtHint1").innerHTML="";
    return;
    document.getElementById("txtHint2").innerHTML="";
    return;
  }
  if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  } else { // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
      document.getElementById("txtHint1").innerHTML=xmlhttp.responseText;
	  document.getElementById("txtHint2").innerHTML=xmlhttp.responseText;
	  
    }
  }
  xmlhttp.open("GET","buscaservico.asp?q="+str,true);
  xmlhttp.send();
}
</script>
<input onChange="showUser(this.value)" type="radio" name="site" value="<%=tiposervico("id")%>" />

E a segunda assim

<script language="javascript" type="text/javascript">
var navegador = navigator.userAgent.toLowerCase(); //Cria e atribui à variável global 'navegador' (em caracteres minúsculos) o nome e a versão do navegador

//Função que inicia o objeto XMLHttpRequest
function objetoXML(){
 if (navegador.indexOf('msie') != -1) { //Internet Explorer
 var controle = (navegador.indexOf('msie 5') != -1) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP'; //Operador ternário que adiciona o objeto padrão do seu navegador (caso for o IE) à variável 'controle'
 try{
 return xmlhttp = new ActiveXObject(controle); //Inicia o objeto no IE
 }catch(e){}
 }else{ //Firefox, Safari, Outros..
 return xmlhttp = new XMLHttpRequest(); //Inicia o objeto no Firefox, Safari, Mozilla
 }
}

var xmlhttp = objetoXML();

// Abre a página
function abrirPag(url){
 xmlhttp.onreadystatechange = verificadorDeEstado;
 xmlhttp.open("GET",url,true);
 xmlhttp.send(null);

 if (xmlhttp.readyState == 1) {
 document.getElementById("listaservicossubservicos").innerHTML = "Carregando...";
 }
 return url;
}

// Verifica o estado do objeto
function verificadorDeEstado(div_id){
 if(xmlhttp.readyState == 4){ // Completo
 if(xmlhttp.status == 200){ // Resposta do Servidor: OK
 var local = div_id;
 document.getElementById("listaservicossubservicos").innerHTML = xmlhttp.responseText ;
 }else{
 alert("Problema: " + xmlhttp.statusText);
 }
 }
  xmlhttp.open("GET","listagem.asp?q="+url,true);
  xmlhttp.send();
}
</script>

<input onChange="abrirPag('listagem.asp?q=<%=tiposervico2("id")%>');" type="radio" name="site1" value="<%=tiposervico2("id")%>" />

Assim funcionou tudo certo.

 

Att;

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.