Erro no metodo onchage, quando Elemento tem propriedade hidden

2 respostas
aszarael

Pessoal,

estou com o seguinte problema.

tenho seguinte metodo.
function buscaFilho1(cod_pai){  
	   
	   try{  
	      xmlhttp = new XMLHttpRequest();  
	   } catch(e1) {  
	      try{  
	         xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");  
	      }catch(e2){  
	         try{  
	            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");  
	         }catch(e3){  
	            xmlhttp = false; //Viva a padronização dos browsers  
	         }  
	      }  
	   }
	   //limpa a combobox  
	   var c = document.getElementById("txtPasta2")  
	   while( c.options.length > 0) c.options[0] = null  
	   		c.options[0] = new Option("... Wait a moment ... ","... Wait a moment ...")  
		  	//Monta a url com nome da pasta pai  
		  	xmlhttp.open("GET", "pesquisajx.jsp?nom_pasta=" + cod_pai, true);
	   		
	   		xmlhttp.onreadystatechange=function() {  
	   		if (xmlhttp.readyState==4){  
		 		var c = document.getElementById("txtPasta2")  
	     		while(c.options.length > 0){
		     		c.options[0] = null  
		 	}
		    
		 	//Transforma a lista de Pastas JSON em Javascript  
		 	var aPastas = eval((xmlhttp.responseText));  
		 	//popula o select com a lista de Pastas obtida  
		 	for(var i = 0; i < aPastas.length; i++){
		        	  
		 		aPastas[i] = unescape(aPastas[i])  
				if (i == 0){
					c.options[c.options.length] = new Option("			",  "			");
				}
		    		c.options[c.options.length] = new Option(aPastas[i],  aPastas[i]);  
		 	  
	   		}  
	  	}  
	  } 		
	  	xmlhttp.send(null) 
}

Que é chamado no option,

<input name="btn2" style="visibility:hidden;" type="button" value="+ Folder" onclick="ControleTela(this.form,2)"><select name="txtPasta2" id="txtPasta2" style="width:400px;visibility:hidden;" onchange="buscaFilho2(this.options[this.selectedIndex].value)">
Que possui a visibilidade hidden, que é habilitada pelo metodo
function ControleTela(formulario,i)
{
  if (i == 0){	
  	formulario.btn0.style.visibility="hidden";
  	formulario.btn1.style.visibility="visible";
  	formulario.txtPasta1.style.visibility="visible";
  }
  if (i == 1){	
	  	formulario.btn1.style.visibility="hidden";
	  	formulario.btn2.style.visibility="visible";
	  	formulario.txtPasta2.style.visibility="visible";
  }
}

Este codigo, funcionava no chrome sem problemas, e do nada, agora, da erro de pagina não encontrada.

No entando quando mudo a visibilidade de hidden para visible no option, e funciona sem problemas.
Outro ponto, e que no Mozilla e no IE, funcionam normalmente.

Alguem tem uma ideia do porque, deste problema ?? E conhece alguma solução ??

grato,

2 Respostas

aszarael

Galera,

acabei de descobrir, o problema, mais não entendi o motivo, pois funcionava anteriormente,

<input name="btn2" style="visibility:hidden;" type="button" value="+ Folder" onclick="ControleTela(this.form,2)"><select name="txtPasta2" id="txtPasta2" style="width:400px;visibility:hidden;" onchange="buscaFilho2(this.options[this.selectedIndex].value)">

O lance é no style=“visibility:hidden;” , quando tiro isso do codigo ele funciona normalmente,
Para resolver, acabei trocando o visibility, pelo disable=true, o que não deixa escondido o campo, mais ao menos, deixa ele bloqueado,

alguem, sabe porque isso parou de funcionar no chrome ?

grato,

aszarael
aszarael:
Pessoal,

estou com o seguinte problema.

tenho seguinte metodo.
function buscaFilho1(cod_pai){  
	   
	   try{  
	      xmlhttp = new XMLHttpRequest();  
	   } catch(e1) {  
	      try{  
	         xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");  
	      }catch(e2){  
	         try{  
	            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");  
	         }catch(e3){  
	            xmlhttp = false; //Viva a padronização dos browsers  
	         }  
	      }  
	   }
	   //limpa a combobox  
	   var c = document.getElementById("txtPasta2")  
	   while( c.options.length > 0) c.options[0] = null  
	   		c.options[0] = new Option("... Wait a moment ... ","... Wait a moment ...")  
		  	//Monta a url com nome da pasta pai  
		  	xmlhttp.open("GET", "pesquisajx.jsp?nom_pasta=" + cod_pai, true);
	   		
	   		xmlhttp.onreadystatechange=function() {  
	   		if (xmlhttp.readyState==4){  
		 		var c = document.getElementById("txtPasta2")  
	     		while(c.options.length > 0){
		     		c.options[0] = null  
		 	}
		    
		 	//Transforma a lista de Pastas JSON em Javascript  
		 	var aPastas = eval((xmlhttp.responseText));  
		 	//popula o select com a lista de Pastas obtida  
		 	for(var i = 0; i < aPastas.length; i++){
		        	  
		 		aPastas[i] = unescape(aPastas[i])  
				if (i == 0){
					c.options[c.options.length] = new Option("			",  "			");
				}
		    		c.options[c.options.length] = new Option(aPastas[i],  aPastas[i]);  
		 	  
	   		}  
	  	}  
	  } 		
	  	xmlhttp.send(null) 
}

Que é chamado no option,

<input name="btn2" style="visibility:hidden;" type="button" value="+ Folder" onclick="ControleTela(this.form,2)"><select name="txtPasta2" id="txtPasta2" style="width:400px;visibility:hidden;" onchange="buscaFilho2(this.options[this.selectedIndex].value)">
Que possui a visibilidade hidden, que é habilitada pelo metodo
function ControleTela(formulario,i)
{
  if (i == 0){	
  	formulario.btn0.style.visibility="hidden";
  	formulario.btn1.style.visibility="visible";
  	formulario.txtPasta1.style.visibility="visible";
  }
  if (i == 1){	
	  	formulario.btn1.style.visibility="hidden";
	  	formulario.btn2.style.visibility="visible";
	  	formulario.txtPasta2.style.visibility="visible";
  }
}

Este codigo, funcionava no chrome sem problemas, e do nada, agora, da erro de pagina não encontrada.

No entando quando mudo a visibilidade de hidden para visible no option, e funciona sem problemas.
Outro ponto, e que no Mozilla e no IE, funcionam normalmente.

Alguem tem uma ideia do porque, deste problema ?? E conhece alguma solução ??

grato,

Criado 28 de maio de 2015
Ultima resposta 28 de mai. de 2015
Respostas 2
Participantes 1