Jump to content

Recommended Posts

Posted

Boa tarde

Espero estar a publicar no sitio certo.

Eu tenho um pequeno código de script. A unica coisa que faz é consoante a opção que escolho numa listbox ele faz aparecer ou desaparecer outras textbox.

Segue o codigo do SCRIPT:

<script language="javascript">

function show(){

		 if(document.getElementById('tipo_despesa3').value =="Gasóleo(Cepsa)"){
		  document.getElementById('lbl_descriminacao').style.display = 'none';
		  document.getElementById('descriminacao').style.display = 'none';
		  document.getElementById('descriminacao').value = '';
		  document.getElementById('lbl_km').style.display = 'block';
		  document.getElementById('km').style.display = 'block';
		  document.getElementById('lbl_litros').style.display = 'block'; 
		  document.getElementById('litros').style.display = 'block';		
		  }		   
	  if(document.getElementById('tipo_despesa3').value =="Gasóleo"){
		  document.getElementById('lbl_descriminacao').style.display = 'none';
		  document.getElementById('descriminacao').style.display = 'none';
		  document.getElementById('descriminacao').value = '';
		  document.getElementById('lbl_km').style.display = 'block';
		  document.getElementById('km').style.display = 'block';
		  document.getElementById('lbl_litros').style.display = 'block'; 
		  document.getElementById('litros').style.display = 'block';   
		  }			
	  if(document.getElementById('tipo_despesa3').value =="Peças/Manutenção"){
		  document.getElementById('lbl_descriminacao').style.display = 'block';
		  document.getElementById('descriminacao').style.display = 'block';
		  document.getElementById('lbl_km').style.display = 'none';
		  document.getElementById('km').style.display = 'none';
		  document.getElementById('km').value = '';
		  document.getElementById('lbl_litros').style.display = 'none'; 
		  document.getElementById('litros').style.display = 'none';
		  document.getElementById('litros').value = '';

		  }			 
		    if(document.getElementById('tipo_despesa3').value =="[selecionar Opção]"){
		  document.getElementById('lbl_descriminacao').style.display = 'none';
		  document.getElementById('descriminacao').style.display = 'none';
		  document.getElementById('descriminacao').value = '';
		  document.getElementById('lbl_km').style.display = 'none';
		  document.getElementById('km').style.display = 'none';
		  document.getElementById('km').value = '';
		  document.getElementById('lbl_litros').style.display = 'none'; 
		  document.getElementById('litros').style.display = 'none'; 
		  document.getElementById('litros').value = '';  
		  }
	    }

</script>

E aqui o codigo da listbox:

<select name="tipo_despesa3" id="tipo_despesa3"  onClick="show()">
	  <option selected="selected">[selecionar opção]</option>
	  <option>Gasóleo(Cepsa)</option>
	  <option>Gasóleo</option>
	  <option>Peças/Manutenção</option>
   </select>

Não consigo mesmo perceber porque não funciona a sério...

Já pesquisei na internet, já andei a mexer com DLLs e tudo...

É complicado porque estou a programar para a empresa, e sou o unico que usa chrome...

Todos os outros usam IE9.

Ajuda?? =/

Muito Obrigado desde já

Cumprimentos

Daniel Alves

Posted (edited)

além de o teu script parece demasiado extenso sem a necessidade de o ser (podes envolver todos os elementos dentro de um div e fazer aparece e desaparecer somente os divs, isso parece problemas de codificação, isto porque o valor das opções possuem caracteres acentuados

experimenta algo do género

nota a tomar nesta solucao

- os id's dos divs devem corresponder ao valor da opcao do select

<style type="text/css">
 .choice { display: none; } /* esconde todas as opcoes ao inicio */
</style>


<script type="text/javascript">
 /* variavel que ira guardar o id do elemento que se encontra visivel */
 var showing = '';
 function show() {
   var select = document.getElementById('choosable');

   /* verifica se a escolha e valida, isto e, nao e a primeira escolha */
   if (select.value != '') {
     /* esconde o div que se encontra apresentado */
     if (showing != '')
       document.getElementById(showing).style.display = 'none';

     /* apresenta o div escolhido */
     showing = select.value;
     document.getElementById(showing).style.display = 'block';
   }
 }
</script>


<select id="choosable" onchange="show()">
 <option value="" selected="selected">[selecionar opção]</option>
 <option value="choise1">Gasóleo(Cepsa)</option>
 <option value="choise2">Gasóleo</option>
 <option value="choise3">Peças/Manutenção</option>
</select>
<div class="choice" id="choice1">
 <!-- os inputs que quiseres -->
</div>
<div class="choice" id="choice2">
 <!-- os inputs que quiseres -->
</div>
<div class="choice" id="choice3">
 <!-- os inputs que quiseres -->
</div>
Edited by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p
Posted

além de o teu script parece demasiado extenso sem a necessidade de o ser (podes envolver todos os elementos dentro de um div e fazer aparece e desaparecer somente os divs, isso parece problemas de codificação, isto porque o valor das opções possuem caracteres acentuados

experimenta algo do género

nota a tomar nesta solucao

- os id's dos divs devem corresponder ao valor da opcao do select

<style type="text/css">
 .choice { display: none; } /* esconde todas as opcoes ao inicio */
</style>


<script type="text/javascript">
 /* variavel que ira guardar o id do elemento que se encontra visivel */
 var showing = '';
 function show() {
var select = document.getElementById('choosable');

/* verifica se a escolha e valida, isto e, nao e a primeira escolha */
if (select.value != '') {
  /* esconde o div que se encontra apresentado */
  if (showing != '')
	document.getElementById(showing).style.display = 'none';

  /* apresenta o div escolhido */
  showing = select.value;
  document.getElementById(showing).style.display = 'block';
}
 }
</script>


<select id="choosable" onchange="show()">
 <option value="" selected="selected">[selecionar opção]</option>
 <option value="choise1">Gasóleo(Cepsa)</option>
 <option value="choise2">Gasóleo</option>
 <option value="choise3">Peças/Manutenção</option>
</select>
<div class="choice" id="choice1">
 <!-- os inputs que quiseres -->
</div>
<div class="choice" id="choice2">
 <!-- os inputs que quiseres -->
</div>
<div class="choice" id="choice3">
 <!-- os inputs que quiseres -->
</div>

?????????? não trabalha no meu pc 😛

Posted

o código é um exemplo escrito de cabeça ... é suposto adaptar e testar, isto porque tem um pequeno bug:

...
 <option value="choise1">Gasóleo(Cepsa)</option>
...
<div class="choice" id="choice1">
..

os valores das "options" não correspondem aos "id"'s das "div"'s como foi dito no post

nota a tomar nesta solucao

- os id's dos divs devem corresponder ao valor da opcao do select

IRC : sim, é algo que ainda existe >> #p@p

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.