Ir para conteúdo

POWERED BY:

Arquivado

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

Londim

Problema em passar uma variavel pra cada resposta de uma funcao vir di

Recommended Posts

Galera seguinte. To montando um sistema para orcamentos....

 

ou seja em um mesmo orcamento pode ter varios serviços entao coloquei uma funcao que adiciona dinamicamente alguns campos...

 

ta funcionando beleza, quando gero este campo ele mi da um list menu com dados do mysql.... ta funfando beleza

 

quando eu troco o valor do list/menu via onchange a funcao vai ao bd e busca o valor e escreve o vamor em um campo de id="texto" FUNCIONANDO TB beleza

 

Aqui é q e o problema....

 

isso tudo funciona quando eu adiciono apenas um campo dinamicamente....

 

 

quando adiciono o campo 2 por exmplo e troco o valor do list/menu ele escreve o resultado (valor) no lugar no 1....

 

 

isso ocorre porque o resultado da funcao volta para o campo chamado texto, como apenas o 1º chama "texto" ele troca apenas do 1º.

 

o nome do segundo campo ja é "texto" tb mas so troca do 1.

 

 

 

a funcao q faz isto esta aqui

var xmlHttp
function mostrar(strid)
{ 
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("O browser não suporta HTTP Request")
return
}
var url="ajax/utilizador.php"
url=url+"?id_util="+strid
url=url+"&sid="+Math.random()
xmlHttp.onreadystatechange=stateChanged
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}

function stateChanged() 
{ 
if (xmlHttp.readyState==4 || xmlHttp.readyState=="200")
{ 
document.getElementById[b]("[b]texto[/b]").[/b]innerHTML=xmlHttp.responseText 
} 
}
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
//Internet Explorer
try
 {
 xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
 }
catch (e)
 {
 xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
 }
}
return xmlHttp;
} 

 

 

Bom entaoo meu problema aqui é que preciso q a variavel contadora do meu sistema de Adicionar dinamicamente campos altere o id do campo valor para EXEMPLO "texto(+variavel contadora)" no caso da variavel se 3 ficaria id="texto3";

 

 

e esta mesma unidade tb fosse mandada para o script acima ficando na linha de saida tambem "texto(+variavel contadora)" no caso da variavel se 3 ficaria id="texto3";

 

vou postar tb o script que gera os campos dinamicamente

 

aguardo

<script language="JavaScript" type="text/javascript">    


//Não altere esses valores! 
var iCount = 0; 
var iCampos = 1; 
var hidden1;  


//Definindo quantos campos poderão ser criados (máximo); 
var iCamposTotal = 10;  



//Função que adiciona os campos; 
function addInput() {    
if (iCampos <= iCamposTotal) { 
       hidden1 = document.getElementById("hidden1"); 

       //Criando uma variável que armazenará as informações da linha que será criada. 
       //Os campos estão sendo colocados no interior de uma div, pois a linha contém muitos elementos; 
       //Basta excluir a div, para excluir todos os elementos da linha; 

	var texto = "<div id='linha"+iCount+"'><table width='100%' border='0'><tr><td>Descriminacao</td><td>Valor:</td><tr><td><select name='util' class='field' id='util' onchange='mostrar(this.value)'><option value='' selected='selected'></option><? $select_categoria = mysql_query('select * from categorias order by contador desc'); while($r = mysql_fetch_array($select_categoria)){ print "<option value='$r[0]'>$r[1]</option>";} ?></select><input type='image' src='programacao/gifs/trash.gif'value='Apagar campo' onClick='removeInput(\"linha"+iCount+"\")' title='Apagar Campo'></td><td><div id='texto' ><b></b></div></td></div>"; 


       //Capturando a div principal, na qual os novos divs serão inseridos: 
       var camposTexto = document.getElementById('camposTexto');    
       camposTexto.innerHTML = camposTexto.innerHTML+texto; 

       //Escrevendo no hidden os ids que serão passados via POST; 
       //No código ASP ou PHP, você poderá pegar esses valores com um split, por exemplo; 
               if (hidden1.value == "") { 
                       document.getElementById("hidden1").value = iCount; 
               }else{ 
                       document.getElementById("hidden1").value += ","+iCount; 
               } 
iCount++; 
iCampos++; 
}    
} 

//Função que remove os campos; 
function removeInput(e) { 
  var pai = document.getElementById('camposTexto'); 
  var filho = document.getElementById(e); 
  hidden1 = document.getElementById("hidden1"); 
  var campoValor = document.getElementById("texto"+e.substring(5)).value; 
  var lastNumber = hidden1.value.substring(hidden1.value.lastIndexOf(",")+1); 

  if(confirm("O campo que contém o valor:\n» "+campoValor+"\nserá excluído permanentemente!\n\nDeseja prosseguir?")){ 
               var removido = pai.removeChild(filho); 
               //Removendo o valor de hidden1: 
               if (e.substring(5) == hidden1.value) { 
                       hidden1.value = hidden1.value.replace(e.substring(5),""); 
               }else if(e.substring(5) == lastNumber) { 
                       hidden1.value = hidden1.value.replace(","+e.substring(5),""); 
               }else{ 
                       hidden1.value = hidden1.value.replace(e.substring(5)+",","");            
               } 
       iCampos--; 
       } 
} 
</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Modifique a function mostrar() para aceitar mais um parametro:

 

 

function mostrar( strid, id_destino )
{ 
  xmlHttp=GetXmlHttpObject()
  if (xmlHttp==null)
  {
     alert ("O browser não suporta HTTP Request")
     return
  }
  var url="ajax/utilizador.php";
  url=url+"?id_util="+strid;
  url=url+"&sid="+Math.random();

  xmlHttp.onreadystatechange = function() 
  { 
     if (xmlHttp.readyState==4 || xmlHttp.readyState=="200")
     { 
        document.getElementById( id_destino ).innerHTML=xmlHttp.responseText 
     } 
  }
  xmlHttp.open("GET",url,true)
  xmlHttp.send(null)
}

 

E então na chamada você vai enviar o alvo:

 

onchange="mostrar(this.value, 'texto')"

na outra:

onchange="mostrar(this.value, 'texto1')"

e assim por diante.

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.