Ir para conteúdo

Arquivado

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

AndersonWS

Mostrar campo conforme o value do input type="radio"

Recommended Posts

Tenho a seguinte função:

function id(el) {
  return document.getElementById(el);
}
function mostra(element) {
  if (element) {
	id(element.value).style.display = 'block';
  }
}
function esconde_todos($element, tagName) {
  var $elements = $element.getElementsByTagName(tagName),
	  i = $elements.length;
  while(i--) {
	$elements[i].style.display = 'none';
  }
}
window.addEventListener('load', function() {
  var $OutraRes = id('OutraRes'),
	  $id1 = id('1');

  //mostrando no onload da página
  esconde_todos(id('palcoRes'), 'div');
  mostra(document.querySelector('input[name="reside"]:checked'));
  
  //mostrando ao clicar no radio
  var $radios = document.querySelectorAll('input[name="reside"]');
  $radios = [].slice.call($radios);

  $radios.forEach(function($each) {
	$each.addEventListener('click', function() {
	  esconde_todos(id('palcoRes'), 'div');
	  mostra(this);
	});
  });
});
<label>
  <input type="radio" name="reside" value="1" required=""/>
  Sim
</label>
<label>
  <input type="radio" name="reside" value="OutraRes" required=""/>
  Não
</label>
<div id="palcoRes">
  <div id="OutraRes">
	<input name="res" id="res" placeholder="res" type="text"/>
  </div>
</div>

Funciona certinho porém preciso que ao invés de verificar se "algum" radio está checked, preciso verificar qual o value.
Se for value "1" abre uma div, se for value "OutraRes" abre outra div.
Daria pra modificar esse script ou se alguém sabe outro maneira?

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei a solução então vou colaborar. Alguém marca como "Resolvido" por favor.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
    $('.radio').click(function() {
        $('label').hide();
        $(this).parent().show();
        valor = $(this).val();
        $('.fields').val(valor).show();
        $('.cancel').show();
    });
    $('.cancel').click(function() {
        $('label').show();
        $('button,.fields').hide();
    });
});

function marcarTodos(marcar){
	var itens = document.getElementsByName('reside');

	if(marcar){
		document.getElementById('acao').innerHTML = '';
	}else{
		document.getElementById('acao').innerHTML = '';
	}

	var i = 0;
	for(i=0; i<itens.length;i++){
		itens[i].checked = marcar;
	}

}
</script>
<span id="acao"></span> <br>

<label class="radio-inline">
	<input type="radio" name="reside" class="radio" value="0" required=""/>Não
	<span class="fields">
	Opção não
	<button class="cancel" onclick="marcarTodos(this.checked);">X</button>
	</span>
</label>

<label class="radio-inline">
	<input type="radio" name="reside" class="radio" value="1" required=""/>Sim
	<span class="fields">
	Opção Sim claro!
	<button class="cancel" onclick="marcarTodos(this.checked);">X</button>
	</span>
</label>

Assim você consegue mostrar/ocultar informações conforme a escolha e também se sair da escolha feita desmarca ela automaticamente.

Espero que ajude a comunidade :tounge_wink:

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Fala pessoal, tudo bem?
       
      Tô tentando fazer um pre-loading, mas não consigo de jeito algum.
      Quero mostrar uma animação enquanto a página é carregada e depois de caregada, esconder a animação e mostrar conteúdo.
       
      Aguém pode me ajudar?
       
      Segue código abaixo
       
       
      <!DOCTYPE html>
      <html lang="pt-br">
      <head>
          <meta charset="utf-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0" />  
          <title>PÁGINA LOAD</title>

      <style type="text/css">
      .loadclass {
          border: 2px solid #f3f3f3; /* Light grey */
          border-top: 4px solid #ffc401; /* Blue */
          border-radius: 50%;
          width: 50px;
          height: 50px;
          animation: spin 2s linear infinite;
      }
      @keyframes spin {
          0% { transform: rotate(0deg); }
          100% { transform: rotate(360deg); }
      }
      .conteudo {
          display:none;
      }
      </style>
      <script>
          function loading(){
              document.getElementsByClassName('loadclass')[0].style.display="none";
              document.getElementsByClassName('conteudo').style.display="block";
          }
      </script>
      </head>
      <body onLoad="loading()">
      <div class="loadclass"></div>
      <div class="conteudo">SEU CONTEUDO AQUI DENTRO!!!</div>
      </body>
      </html>
    • Por ILR master
      Pessoal, pergunta bem simples. Abaixo tenho o seguinte código:
       
      <script>
      function alerta()
      {
        if (window.confirm("Você realmente quer sair?")) {
          window.open("sair.html");
      }
      }
      </script>
       
      Funciona perfeitamente, só que está abrindo em outra janela e quero que abra na mesma janela.
       
      Alguém pode me ajudar?
    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
    • Por Thiago Duarte
      Oi, gostaria de arrastar imagem e ao soltar formar bloco html, meu bloco de html ficaria com nome, content-1.html, content-2.html, etc
       
      Alguem pode me ajudar?
    • Por belann
      Olá!
       
      Estou fazendo o upload de arquivos com fetch dessa forma
      fetch(url, {
              method: 'POST',
              headers: {'Content-Type': 'multipart/form-data',},
              body: formData 
          }).catch((error) => (console.log("Problemas com o Upload"), error));
       
      estou usando input type=file
      e criando uma const formData = new FormData(); 
      mas não faz e não dá nenhum erro.
      estou fazendo o upload com a url="http://localhost/dashboard/dados".
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.