Ir para conteúdo
Fórum Script Brasil
  • 0

probleminha com radiobuttons


Notax

Pergunta

Pessoal, seguinte... tenho os seguintes inputs:

<input type="radio" name="prazos" id="radio9" value="1" onclick="EmBloqueto(this.checked)">

        <input type="radio" name="prazos" id="radio10" value="2" onclick="EmDeposito(this.checked)">
essas functios que eles chamam são essas aqui:
function EmDeposito(status)
{
if (status)
    document.getElementById("deposito").style.display = 'block';
else
    document.getElementById("deposito").style.display = 'none';
}

function EmBloqueto(status)
{
if (status)
    document.getElementById("bloqueto").style.display = 'block';
else
    document.getElementById("bloqueto").style.display = 'none';
}

ou seja, ao selecionar uma opção uma determinada div aparece...

até que ta funcionando... so que quando user seleciona a opção com value 1, por exemplo aparece a div correspondente, mas depois se ele resolve mudar e seleciona a opção value2 a nova div tb aparece mas a primeira div não some... ficam as duas na tela... e eu queria que ao radiobutton ficasse desmarcado a div sumisse...

alguém da essa força?

[]'s Notax

Link para o comentário
Compartilhar em outros sites

22 respostass a esta questão

Posts Recomendados

  • 0

Fala Jothaz... valeu a atenção... Um alert onde? como assim? não entendi?

Mas se fosse algum valor errado não deveria abrir a div, certo? ao selecionar a opçao a div é aberta, porem de o user resolve trocar de opção aquela que abriu antes não fecha e a nova é aberta tb! só preciso que quando a opção esteja desmarcada a div volte a sumir... tu achas que pode ser o valor?

Tentei trocar 'none' por '' e não mudou tb...

[]'s Notax

Link para o comentário
Compartilhar em outros sites

  • 0

O alert seria aqui:

function EmDeposito(status)
{
   alert(status)

  .....
  .....
  ....
Sugeri o alert para confirmar qual o valor esta sendo recebido pela função. Como você esta utilziando a comparação como se status fosse booleana (true ou false) mas é relamente este conteúdo que esta sendo passado. O alert vai confirmar
if (status)
    document.getElementById("deposito").style.display = 'block';
else
    document.getElementById("deposito").style.display = 'none';
}

Não há dúvid aque a função esta sendo executada mas quanto ao conteúdo do status.

Link para o comentário
Compartilhar em outros sites

  • 0

Fala Jothaz... aham... entendi o que você quiz dizer... valeu pela força...

então... coloquei os alerts conforme você sugeriu... sempre que pressionados retornam o valor true...

quando troco de um pra outro o que aparece sempre é o true deste novo...

e agora? tens alguma sugestão?

[]'s Notax

Link para o comentário
Compartilhar em outros sites

  • 0

Jothaz, valeu pelo retorno... to postando so um trecho... o resto é repetição...

segue o codigo:

<script>
function EmDebito(status)
{
alert(status)
if (status)
    document.getElementById("debito").style.display = 'block';
else
    document.getElementById("debito").style.display = 'none';
}
</script>
<html>
<input type="radio" name="prazos" value="4" onclick="EmDebito(this.checked)">
</html>

[]'s Notax

Link para o comentário
Compartilhar em outros sites

  • 0
&lt;script>
function EmDebito(status)
{
alert(status)
if (status)
    document.getElementById("debito").style.display = 'block';
else
    document.getElementById("debito").style.display = 'none';
}
</script>


<html>
<input type="radio" name="prazos" value="4" onclick="EmDebito(this.checked)">
</html>
Me parece que o probelma é porque você esta passando this.checked com parâmetro e sempre que for clicado (onclick) estará true dai so executa uma condição sempre. Use o atributo value do
<input type="radio"
Tenta assim:
&lt;script>
function EmDebito(status)
{
alert(status)
if (status=='4')
    document.getElementById("debito").style.display = 'block';
else
    document.getElementById("debito").style.display = 'none';
}
</script>


<html>
<input type="radio" name="prazos" value="4" onclick="EmDebito(this.value)">
</html>

Link para o comentário
Compartilhar em outros sites

  • 0

Fala Jothaz... beleza?

Cara, então... fiz o que você sugeriu... mas continua com o mesmo problema...

Apesar de os alerts agora passarem o numero correspondente a opção dos radios... tipo: 1, 2, 3, 4 ou 5...

mas tipo, o user seleciona o numero 1, a div correspondente aparece na tela, depois ele seleciona o numero 2, a div do 1 continua na tela e a do 2 tb aparece...

mesma coisa...

tens mais alguma sugestão?

[]'s Notax

Link para o comentário
Compartilhar em outros sites

  • 0

você têm certeza que o valor esta vindo ok?

Sem brancos?

porque se esta chegando a funão os valores correto então deveria funcionar.

Dê um alert asiM:

alert|('|' + status + '|'

E verirfique se não esta vida brancos.

Posta os códgo da chamda e da função ai para facilitar

Link para o comentário
Compartilhar em outros sites

  • 0

Aham... certeza absoluta...

sem espaços...

será que eu cometi mais algum errinho?

segue o codigo:

<script>
function EmBloqueto(status)
{
alert('|' + status + '|')
if (status==1)
    document.getElementById("bloqueto").style.display = 'block';
else
    document.getElementById("bloqueto").style.display = 'none';
}
</script>

<html>
 <input type="radio" name="prazos" value="1" onclick="EmBloqueto(this.value)">
</html>

valeu a força

[]'s Notax

Link para o comentário
Compartilhar em outros sites

  • 0

Cara estranho fiz o teste abaixo e funcionou 100%:

<script>
function EmBloqueto(status){
    if (status==1){
        alert('|' + status + '|')

        document.getElementById("bloqueto").style.display = 'block';
    }else{
        alert('|' + status + '|')

        document.getElementById("bloqueto").style.display = 'none';
    }
}
</script>

<html>
<input type="radio" name="prazos" value="1" onclick="EmBloqueto(this.value)">
<input type="radio" name="prazos" value="2" onclick="EmBloqueto(this.value)">
<input type="radio" name="prazos" value="3" onclick="EmBloqueto(this.value)">
<div id="bloqueto">
    div bloqueto
</div>
</html>

Dê uma olhada.

Link para o comentário
Compartilhar em outros sites

  • 0

nada... nadinha... mesma coisa...

Tu estás falando de RadioButtons né?

porque tipo... se eu colocar a mesma função num checkbox funciona que é uma maravilha... mas eu preciso mesmo é em radio!

esse segundo alert pra mim nem apareceu:

}else{

alert('|' + status + '|')

[]'s Notax

Link para o comentário
Compartilhar em outros sites

  • 0

Uhm... testei sim... vou postar aqui pra você ver se tem algum problema...

está exatamente desta forma:

<script>
function EmBloqueto(status){
    if (status==1){
        alert('|' + status + '|')

        document.getElementById("bloqueto").style.display = 'block';
    }else{
        alert('|' + status + '|')

        document.getElementById("bloqueto").style.display = 'none';
    }
}
function EmDeposito(status){
    if (status==2){
        alert('|' + status + '|')

        document.getElementById("deposito").style.display = 'block';
    }else{
        alert('|' + status + '|')

        document.getElementById("deposito").style.display = 'none';
    }
}
function EmCheque(status){
    if (status==3){
        alert('|' + status + '|')

        document.getElementById("emcheque").style.display = 'block';
    }else{
        alert('|' + status + '|')

        document.getElementById("emcheque").style.display = 'none';
    }
}
function EmDebito(status){
    if (status==4){
        alert('|' + status + '|')

        document.getElementById("debito").style.display = 'block';
    }else{
        alert('|' + status + '|')

        document.getElementById("debito").style.display = 'none';
    }
}
function EmCredito(status){
    if (status==5){
        alert('|' + status + '|')

        document.getElementById("emcredito").style.display = 'block';
    }else{
        alert('|' + status + '|')

        document.getElementById("emcredito").style.display = 'none';
    }
}
</script>



<html>
    <input type="radio" name="prazos" value="1" onclick="EmBloqueto(this.value)">
     
        <input type="radio" name="prazos" value="2" onclick="EmDeposito(this.value)">
            
        <input type="radio" name="prazos" value="3" onclick="EmCheque(this.value)">
  
        <input type="radio" name="prazos" value="4" onclick="EmDebito(this.value)">
       
        <input type="radio" name="prazos" value="5" onclick="EmCredito(this.value)">
   
  
<div id="emcredito" style="display:none">

...

</div>

repete igual nas outras divs...

Editado por Notax
Link para o comentário
Compartilhar em outros sites

  • 0

Cara fiz este testes simplório abaixo e funcionou legal:

<script>
function manipulaDiv(status){
    if (status==1){ //bloqueto
        document.getElementById("bloqueto").style.display = '';
        document.getElementById("deposito").style.display = 'none';
        document.getElementById("emcheque").style.display = 'none';
        document.getElementById("debito").style.display = 'none';
        document.getElementById("emcredito").style.display = 'none';
    }else if (status==2){ //deposito
        document.getElementById("bloqueto").style.display = 'none';
        document.getElementById("deposito").style.display = '';
        document.getElementById("emcheque").style.display = 'none';
        document.getElementById("debito").style.display = 'none';
        document.getElementById("emcredito").style.display = 'none';

    }else if (status==3){ //emcheque
        document.getElementById("bloqueto").style.display = 'none';
        document.getElementById("deposito").style.display = 'none';
        document.getElementById("emcheque").style.display = '';
        document.getElementById("debito").style.display = 'none';
        document.getElementById("emcredito").style.display = 'none';

    }else if (status==4){ //debito
        document.getElementById("bloqueto").style.display = 'none';
        document.getElementById("deposito").style.display = 'none';
        document.getElementById("emcheque").style.display = 'none';
        document.getElementById("debito").style.display = '';
        document.getElementById("emcredito").style.display = 'none';

    }else if (status==5){ //emcredito
        document.getElementById("bloqueto").style.display = 'none';
        document.getElementById("deposito").style.display = 'none';
        document.getElementById("emcheque").style.display = 'none';
        document.getElementById("debito").style.display = 'none';
        document.getElementById("emcredito").style.display = '';

    }
}
</script>



<html>
    <input type="radio" name="prazos" value="1" onclick="manipulaDiv(this.value)">
     
        <input type="radio" name="prazos" value="2" onclick="manipulaDiv(this.value)">
            
        <input type="radio" name="prazos" value="3" onclick="manipulaDiv(this.value)">
  
        <input type="radio" name="prazos" value="4" onclick="manipulaDiv(this.value)">
       
        <input type="radio" name="prazos" value="5" onclick="manipulaDiv(this.value)">
   
  
<div id="bloqueto" style="display:none">
bloqueto
</div>
<div id="deposito" style="display:none">
deposito
</div>
<div id="emcheque" style="display:none">
emcheque
</div>
<div id="debito" style="display:none">
debito
</div>
<div id="emcredito" style="display:none">
emcredito
</div>

Não é que com você estava fazendo esta errado mas da forma acima acho que simplica e funciona.

Link para o comentário
Compartilhar em outros sites

  • 0

Aham... valeu Jothaz... mais essa hein che?

Funcionou legal... Entendi agora sua lógica realmente faz bem mais sentido do que a antiga! Até porque desta forma temos em uma mesma função todas as "divs" discriminadas!

Cara... valeu a força mais uma vez.

Forte abraço

Notax

Link para o comentário
Compartilhar em outros sites

  • 0

Cara leva a mal não mas equeça a função antiga pois não tinha lógica com estava implementada. Acho quem com none ou block não ia funcionar mesmo. além de que fica muito mais extensa e complica muito a manutenção. Com a nova função existe um única lugar para se dar manutenção ao invés de 5. A forma mais simples e correta de fazer o que você quer e com a função qu lhe passi.

quanto ao block nunca tinha usado apesar de saber de sua existência talvez o comando deva ser assim:

document.getElementById("bloqueto").style.display = block;

Sem os ' (plics).

Agora acho mais jogo usar a função que lhe passei.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...