none
habilitar um text box através de uma seleção de RadioButtonList RRS feed

  • Pergunta

  • Fala gurizada.

    Tu fazendo uma aplicação com um user control.

    Nele tem um  RadioButtonList com cinco opções. Quando a ultima for selecionada eu preciso habilitar um textBobox multiLine. Tem como fazer com JS?

    Esse é o código:

    <asp:RadioButtonList id="rblRespostas" runat="server" CssClass="enquete_rdbList">
    <asp:ListItem Text="aaaaa" Value="1" />
    <asp:ListItem Text="bbbbbb" Value="2" />
    <asp:ListItem Text="cccccccc" Value="3" />
    <asp:ListItem Text="dddddddddd" Value="4" />
    <asp:ListItem Text="eeeeeee" Value="5"/>
    </asp:RadioButtonList>
    <asp:TextBox id="tbOutors" runat="server" TextMode="multiline"></asp:TextBox>

    Valeu.


    • Editado João Goya segunda-feira, 9 de abril de 2012 14:40
    segunda-feira, 9 de abril de 2012 14:23

Respostas

  • Cara, aconselho utilizar a técnica de manipular pelo códgo behind, até porque o javascript pode ser desabilitado no browser.

    Para evitar o efeito de recaga da página use Ajax com scriptmanager e updatepanel.

    Agora se quer mesmo usar Javascript segue uma idéia de como pode ser feito:

    <head runat="server">
        <title></title>
        <script type="text/javascript" language="javascript" >
            function teste(valor) {
                if (valor == '5')
                    document.getElementById("tbOutors").style.display = '';
                else
                    document.getElementById("tbOutors").style.display = 'none';
            }
        </script>
    </head>


        <asp:RadioButtonList id="rblRespostas" runat="server" CssClass="enquete_rdbList" 
                >
    <asp:ListItem onclick="javascript: teste(this.value);" Text="aaaaa" Value="1" />
    <asp:ListItem onclick="javascript: teste(this.value);" Text="bbbbbb" Value="2" />
    <asp:ListItem onclick="javascript: teste(this.value);" Text="cccccccc" Value="3" />
    <asp:ListItem onclick="javascript: teste(this.value);" Text="dddddddddd" Value="4" />
    <asp:ListItem onclick="javascript: teste(this.value);" Text="eeeeeee" Value="5"/>
    </asp:RadioButtonList>
    <asp:TextBox id="tbOutors" runat="server" TextMode="multiline" style="display:none;"></asp:TextBox>
    

    Não sei se é a maneira mais robusta ou mesmo a correta. Também sou iniciante. Mas funcionou aqui comigo.

    Talvez algum outro colega possa sugerir outra forma, mas testa ai e adapte como achar melhor.


    Ninguém falou que seria fácil!

    • Marcado como Resposta João Goya segunda-feira, 9 de abril de 2012 19:28
    segunda-feira, 9 de abril de 2012 18:43

Todas as Respostas

  • NO code behind pdoe ser feito assim:

        <asp:RadioButtonList id="rblRespostas" runat="server" CssClass="enquete_rdbList" 
                onselectedindexchanged="rblRespostas_SelectedIndexChanged" AutoPostBack="true">
    <asp:TextBox id="tbOutors" runat="server" TextMode="multiline" Visible="false"></asp:TextBox>
    
        protected void rblRespostas_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (rblRespostas.SelectedValue == "5")
                tbOutors.Visible = true;
            else
                tbOutors.Visible = false;
        }
    }

    Seria a maneira mais simples. Via Javascript é possível porém o asp.net altera o nome dos controles quando renderiza a página.

    Teria como impedir isto mas não me lembro como. Talvez algum amigo aqui mais experiente posso lembra como isto pode ser feito.


    Ninguém falou que seria fácil!

    segunda-feira, 9 de abril de 2012 15:31
  • Sim, assim funcionou. Mas eu to atras de um js pra nao ter ue ficar recarregando. Se alguem puder dar uma mao...

    Jothaz valeu. Se eu não encontrar nenhum JS vou usar esse teu procedimento.

    Valeu.

    segunda-feira, 9 de abril de 2012 17:23
  • Cara, aconselho utilizar a técnica de manipular pelo códgo behind, até porque o javascript pode ser desabilitado no browser.

    Para evitar o efeito de recaga da página use Ajax com scriptmanager e updatepanel.

    Agora se quer mesmo usar Javascript segue uma idéia de como pode ser feito:

    <head runat="server">
        <title></title>
        <script type="text/javascript" language="javascript" >
            function teste(valor) {
                if (valor == '5')
                    document.getElementById("tbOutors").style.display = '';
                else
                    document.getElementById("tbOutors").style.display = 'none';
            }
        </script>
    </head>


        <asp:RadioButtonList id="rblRespostas" runat="server" CssClass="enquete_rdbList" 
                >
    <asp:ListItem onclick="javascript: teste(this.value);" Text="aaaaa" Value="1" />
    <asp:ListItem onclick="javascript: teste(this.value);" Text="bbbbbb" Value="2" />
    <asp:ListItem onclick="javascript: teste(this.value);" Text="cccccccc" Value="3" />
    <asp:ListItem onclick="javascript: teste(this.value);" Text="dddddddddd" Value="4" />
    <asp:ListItem onclick="javascript: teste(this.value);" Text="eeeeeee" Value="5"/>
    </asp:RadioButtonList>
    <asp:TextBox id="tbOutors" runat="server" TextMode="multiline" style="display:none;"></asp:TextBox>
    

    Não sei se é a maneira mais robusta ou mesmo a correta. Também sou iniciante. Mas funcionou aqui comigo.

    Talvez algum outro colega possa sugerir outra forma, mas testa ai e adapte como achar melhor.


    Ninguém falou que seria fácil!

    • Marcado como Resposta João Goya segunda-feira, 9 de abril de 2012 19:28
    segunda-feira, 9 de abril de 2012 18:43