Ir para conteúdo

POWERED BY:

Arquivado

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

MAPSantos

OnChange select text

Recommended Posts

Oi ppl,

 

tou com um problema, tou utilizando a funcao onchange para quando o usuario seleciona um campo numa combo box apareca uma outra associada ao campo que ele selecionou. tenho uma combo box e 3 sub combo box que aparecem apenas consoante o selecionado na 1ª combo box.

 

o problema é se seleciono um valor na combo box que não tenha sub combo box depois de ter selecionado um que tivessem, as sub combos n desaparecem. não faz a actualização.

 

o codigo que tou a usar e' este:

 

<script language="JavaScript" type="text/javascript">function show_hide(curobj,total){total_de_listbox=totali=1while (i<=total_de_listbox){eval("var var_"+curobj.id+"_"+i);eval("var_"+curobj.id+"_"+i+"=document.all['"+curobj.id+"_"+i+"'].style");eval("var_"+curobj.id+"_"+i+".display='none'");i=i+1;}eval("var_"+curobj.id+"_"+curobj.value+".display=''");}</script>			<select name="opcao" id="opcao" onChange="show_hide(this,3)">			  <option selected="selected">Seleccione</option>			  <option value="1">Problemas de Conectividade</option>			  <option value="2">Problemas de Direito</option>			  <option value="3">Problemas com Serviços</option>			</select>			<select name="opcao_1" id="opcao_1"  style="display:none;" onChange="show_hide(this,3)">			  <option selected="selected">Seleccione</option>			  <option value="1">Não Regista</option>			  <option value="2">Não Ganha IP Público</option>			  <option value="3">Não faz trafego</option>			 </select>			<select name="opcao_2" id="opcao_2" style="display:none;">			  <option selected="selected">Seleccione</option>			  <option>Carregamentos não reflectidos (zzt!)</option>			  <option>Portfólio incorrecto / incoerência de sistemas (especificar)</option>			  <option>Bootfile 9999/Cobranças/Desligamentos</option>			</select>			<select name="opcao_3" id="opcao_3"  style="display:none;" onChange="show_hide(this,2)">			  <option selected="selected">Seleccione</option>			  <option value="1">Mail</option>			  <option value="2">Selfcare</option>			 </select><select name="opcao_1_1" id="opcao_1_1"  style="display:none;" onChange="show_hide(this,3)">		  <option>Modem Avariado</option>		  <option value="1">Avaria comum conhecida</option>		  <option value="2">Avaria / Degradação de Sinal na rede individual</option>		  <option>Bootfile / Classe de Serviço Errada</option>		  <option>Frequências Erradas</option>		  <option>Bootfile Link Azul (cortes DDI)</option>		  <option>Bootfile 8888/Questões de Segurança</option>		  <option>Bootfile Técnico Expirado</option>		  <option value="3">Outro (especificar)</option></select>	    <select name="opcao_1_2" id="opcao_1_2" style="display:none;">			<option>Configuração do PC</option>			<option>Problema no DHCP</option></select><select name="opcao_1_3" id="opcao_1_3" style="display:none;">			<option>Configuração do PC</option>			<option>Problemas de DNS</option>			<option>Não acede páginas especificas</option></select><select name="opcao_3_1" id="opcao_3_1"  style="display:none;" onChange="show_hide(this,1)">			<option>Configuração de Outlook</option>			<option>Acesso Webmail</option>			<option value="1">Outros (especificar)</option></select><select name="opcao_3_2" id="opcao_3_2" style="display:none;">			<option>Problemas com e-mail</option>			<option>Consulta de consumos e Alerta de Consumos que não funciona</option>			<option>Problema com páginas pessoais</option>			<option>Problemas com serviços complementares (ex. panda, PT Wi-fi)</option>			<option>Indisponível</option></select>		<select name="opcao_1_1_1" id="opcao_1_1_1" style="display:none;">		  <option>Rede Coaxial</option>		  <option>Rede Óptica</option></select><select name="opcao_1_1_2" id="opcao_1_1_2" style="display:none;">			<option>Com Sinal Tv</option>			<option>Sem Sinal Tv (Transf. ApoioTV)</option></select>		  <textarea name="opcao_1_1_3" rows="2" id="opcao_1_1_3" style="display:none;"></textarea>		  <textarea name="opcao_3_1_1" rows="2" id="opcao_3_1_1" style="display:none;"></textarea>

Valeu a ajuda!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu selecionar por exemplo no 'opcao' o value 1 ... aparece o 'opcao_1' se neste carregar no value 1, aparece o 'opcao_1_1' no entanto se dpx no 'opcao' selecionar o value 2, o opcao_1 e opcao_1_1 n desaparecem, apesar de aparecer o opcao_1_2. nao esta actualizando :( em todos os que têm sub select text

Compartilhar este post


Link para o post
Compartilhar em outros sites

<script language="JavaScript" type="text/javascript">function show_hide(currentObj){  for (var i = 1; i <= 4; i++) { //Número maximo de opções que o primeiro nivel de select pode ter	if (eval("document.getElementById('"+currentObj.id+"_"+i+"')")) //verifica se o objeto existe	  eval("document.getElementById('"+currentObj.id+"_"+i+"').style.display = 'none'"); // esconde o objeto caso ele exista	  for (var j = 1; j <= 3; j++) { //Número maximo de opções que o segundo nivel de select pode ter		if (eval("document.getElementById('"+currentObj.id+"_"+i+"_"+j+"')"))		  eval("document.getElementById('"+currentObj.id+"_"+i+"_"+j+"').style.display = 'none'");		  		  for (var k = 1; k <= 9; k++) { //Número maximo de opções que o terceiro nivel de select pode ter			if (eval("document.getElementById('"+currentObj.id+"_"+i+"_"+j+"_"+k+"')"))			  eval("document.getElementById('"+currentObj.id+"_"+i+"_"+j+"_"+k+"').style.display = 'none'");			  			  for (var l = 1; l <= 3; l++) { //Número maximo de opções que o quarto nivel de select pode ter				if (eval("document.getElementById('"+currentObj.id+"_"+i+"_"+j+"_"+k+"_"+l+"')"))				  eval("document.getElementById('"+currentObj.id+"_"+i+"_"+j+"_"+k+"_"+l+"').style.display = 'none'");			  }		  }	  }  }  try {	parseInt(currentObj.value);	if (parseInt(currentObj.value) % parseInt(currentObj.value) == 0) {	  eval("document.getElementById('"+currentObj.id+"_"+currentObj.value+"').style.display = 'block'");	}  } catch (e) {	void(0);  }}</SCRIPT>
uso: onChange="show_hide(this)"

 

Muito cuidado se for colocar elementos demais. Pode travar o browser.

 

=Testado=

Imagem Postada - OK

Imagem Postada - OK

Imagem Postada - OK

Compartilhar este post


Link para o post
Compartilhar em outros sites

desculpa, eu sou novato em javascript, pode colocar comentarios na sua function para eu perceber melhor ?

 

neste meu codigo especifico como posso aplicar essa funcão !

 

<script language="JavaScript" type="text/javascript">function show_hide(curobj,total){total_de_listbox=totali=1while (i<=total_de_listbox){eval("var var_"+curobj.id+"_"+i);eval("var_"+curobj.id+"_"+i+"=document.all['"+curobj.id+"_"+i+"'].style");eval("var_"+curobj.id+"_"+i+".display='none'");i=i+1;}eval("var_"+curobj.id+"_"+curobj.value+".display=''");}</script>			<select name="opcao" id="opcao" onChange="show_hide(this,4)">			  <option selected="selected">Seleccione</option>			  <option>Velocidades Lentas</option>			  <option>Problemas com Spyware ou Virus</option>			  <option value="1">Problemas de Conectividade</option>			  <option value="2">Problema com Zzt/Free</option>			  <option value="3">Problemas de Direito / Cobranças</option>			  <option value="4">Problemas com Serviços</option>			</select>		  <p align="left" class="style22">			<select name="opcao_1" id="opcao_1"  style="display:none;" onChange="show_hide(this,3)">			  <option selected="selected">Seleccione</option>			  <option value="1">Não Regista</option>			  <option value="2">Não Ganha IP Público</option>			  <option value="3">Não faz trafego</option>			  <option>Configuração do Router (wireless ou não)</option>				</select>			<select name="opcao_2" id="opcao_2" style="display:none;" onChange="show_hide(this,1)">			  <option selected="selected">Seleccione</option>			  <option>Pop-up bloqueado</option>			  <option value="1">Outros</option>			</select>			<select name="opcao_3" id="opcao_3" style="display:none;" onChange="show_hide(this,1)">			  <option selected="selected">Seleccione</option>			  <option value="1">Portfólio Incorrecto / incoerência de sistemas</option>			  <option>Bootfile 9999/Cobranças/Desligamentos</option>			  <option>Pagamentos efectuados não reflectidos</option>						</select>			<select name="opcao_4" id="opcao_4" style="display:none;" onChange="show_hide(this,2)">			  <option selected="selected">Seleccione</option>			  <option value="1">Mail</option>			  <option value="2">Selfcare</option>						</select>		  </p>		  </div>		  		<span class="style23"></span></td>		<td width="28%" class="text"><select name="opcao_1_1" id="opcao_1_1"  style="display:none;" onChange="show_hide(this,2)">		  <option selected="selected">Seleccione</option>		  <option>Modem Avariado</option>		  <option value="1">Avaria comum conhecida em Saga</option>		  <option>Avaria provável na rede individual (envio de equipa)</option>		  <option>Bootfile / Classe de Serviço Errada</option>		  <option>Frequências Erradas</option>		  <option>Bootfile Link Azul (cortes DDI)</option>		  <option>Bootfile 8888/Questões de Segurança</option>		  <option>Bootfile Técnico Expirado</option>		  <option value="2">Outro (especificar)</option>		</select>		  <select name="opcao_1_2" id="opcao_1_2" style="display:none;" onChange="show_hide(this,1)">			<option selected="selected">Seleccione</option>			<option value="1">Configuração do PC</option>			<option>PC com IP 169</option>			<option>Problema no DHCP</option>		  </select>		  <br />		  <select name="opcao_1_3" id="opcao_1_3" style="display:none;" onChange="show_hide(this,1)">			<option selected="selected">Seleccione</option>			<option value="1">Configuração do PC</option>			<option>Problemas de DNS</option>			<option>Modem desligado (botão on-off)</option>			<option>Não acede páginas especificas</option>			</select>		  <br />		  <textarea name="opcao_2_1" rows="2" id="opcao_2_1" style="display:none;">Descrição</textarea>		  <br />		  <textarea name="opcao_3_1" rows="2" id="opcao_3_1"  style="display:none;">Descrição</textarea>		  <br />		  <select name="opcao_4_1" id="opcao_4_1"  style="display:none;">			<option selected="selected">Seleccione</option>			<option>Duvidas/problema de utilização (outlook)</option>			<option>Indisponibilidade do Serviço</option>			</select>		  <br />		  <select name="opcao_4_2" id="opcao_4_2" style="display:none;">			<option selected="selected">Seleccione</option>			<option>Consulta de consumos/alerta não funciona</option>			<option>Problema com páginas pessoais</option>			<option>Problemas com serviços complementares (ex. panda, PT Wi-fi)</option>			<option>Indisponível</option>			</select></td>		<td width="47%" class="text"><br />		  <br />		  <textarea name="opcao_1_1_1" rows="2" id="opcao_1_1_1" style="display:none;">Descrição:</textarea>		  <br />		  <textarea name="opcao_1_1_2" rows="2" id="opcao_1_1_2" style="display:none;">Especificação:</textarea>		  <br />		  <textarea name="opcao_1_2_1" rows="2" id="opcao_1_2_1" style="display:none;">Descrição</textarea>		  <br />		  <textarea name="opcao_1_3_1" rows="2" id="opcao_1_3_1" style="display:none;">Descrição</textarea></td>	  </tr>
Grande abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

pode sim, eu testei com o seu proprio html postado aqui e funcionou tudo, você só tem que modificar ali nos laços FOR a quantidade maxima que um select pode ter no nivel dele.edit: código atualização para 4 opções no primeiro nivel. comentado

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.