none
Ativar/desativar RadioButtonList via Javascript. RRS feed

  • Pergunta

  • Opa.

     

    Estou precisando ativar/desativar via javascript um RadioButtonList, não posso dar postback na página pois é um questionário com muitos, e devido a isso não fica agradável para o usuário ficar dando postback a todo momento.

     

    Alguém saberia como posso fazer??

     

    Utilizo Visual Studio 2010, .Net 4.0 com Visual Basic.

     

    Obrigado.

    segunda-feira, 19 de julho de 2010 13:02

Respostas

  •  Olá Rodolfo, consegui resolver.

     Desabilitar o RadioButtonList inteiro de uma só vez, não funciona em todos os navegadores, por isso tive que fazer de uma forma que habilite/desabilite cada item do mesmo via javascript. Ficando dessa forma:

     

    function ativaComponente(idRadio, idRqv) {
        
        ValidatorEnable(document.getElementById(idRqv), true);
        var elementRef = document.getElementById(idRadio);
        var inputElementArray = elementRef.getElementsByTagName('input');

        for (var i = 0; i < inputElementArray.length; i++) {
            var inputElement = inputElementArray[i];
             
            inputElement.disabled = false;
        }
    }

    function desativaComponente(idRadio, idRqv) {
        
        ValidatorEnable(document.getElementById(idRqv), false);
        var elementRef = document.getElementById(idRadio);
        var inputElementArray = elementRef.getElementsByTagName('input');

        for (var i = 0; i < inputElementArray.length; i++) {
            var inputElement = inputElementArray[i];

            inputElement.checked = false;
            inputElement.disabled = true;
        }
    }
    • Marcado como Resposta Mateus Leonardi quinta-feira, 19 de maio de 2011 12:56
    quinta-feira, 19 de maio de 2011 12:56

Todas as Respostas

  • Hi,

    Mil solucoes, voce pode usar updatepanel pra atualizar o rbl sem dar um post em toda a pagina, voce tambem pode usar um framework ajax

    tipo esse ...

    http://mitajax.codeplex.com/

    ou voce faz na mao.. mas se voce fizer isso vai dar um trabalhao pra salvar depois.

    aconselho usar o update panel que eh mais simples mas o framework ajax tambem e uma boa ideia.

    Att,


    Tech-ed 2010
    terça-feira, 20 de julho de 2010 23:15
    Moderador
  • Olá, você tem algum critério para desativar os Radios?

    Todos serão desativados? ou somente alguns?

    RadioButtonList

    <asp:RadioButtonList ID="rblTeste" runat="server">
      <asp:ListItem Text="text1"  />
      <asp:ListItem Text="text2" />
    </asp:RadioButtonList>
    

    renderiza

    <table id="rblTeste" border="0">
    	<tr>
    		<td><input id="rblTeste_0" type="radio" name="rblTeste" value="text1" /><label for="rblTeste_0">text1</label></td>
    	</tr><tr>
    		<td><input id="rblTeste_1" type="radio" name="rblTeste" value="text2" /><label for="rblTeste_1">text2</label></td>
    	</tr>
    </table>
    
    

    Com jQuery:

    //Desabilitar o Primeiro
    $('#rblTeste_0').attr("disabled", "disabled");
    //Habilitar o Primeiro
    $('#rblTeste_0').removeAttr("disabled");
    

    Com JavaScript:

    //Desabilitar o Primeiro
    document.getElementById('rblTeste_0').disabled = true;
    //Habilitar o Primeiro
    document.getElementById('rblTeste_0').disabled = false;
    

    Entretando caso precise de alguma validação, realize ela tambem no Server, pois os controles do ASP.NET geralmente tem um controle de Estado, que independendo de algum clientscript ele mantem o estado do controle no server side.

    Ou seja, se você desativar o controle com js, alguem pode ativar com js também e utiliza-lo.

    Por isso valide no server side também.

     

    Espero que tenha ajudado


    Rodolfo F. Jr http://rodolfojunior.com
    • Sugerido como Resposta Rodolfo Fadino domingo, 1 de agosto de 2010 03:45
    terça-feira, 27 de julho de 2010 01:43
  •  Olá Rodolfo, consegui resolver.

     Desabilitar o RadioButtonList inteiro de uma só vez, não funciona em todos os navegadores, por isso tive que fazer de uma forma que habilite/desabilite cada item do mesmo via javascript. Ficando dessa forma:

     

    function ativaComponente(idRadio, idRqv) {
        
        ValidatorEnable(document.getElementById(idRqv), true);
        var elementRef = document.getElementById(idRadio);
        var inputElementArray = elementRef.getElementsByTagName('input');

        for (var i = 0; i < inputElementArray.length; i++) {
            var inputElement = inputElementArray[i];
             
            inputElement.disabled = false;
        }
    }

    function desativaComponente(idRadio, idRqv) {
        
        ValidatorEnable(document.getElementById(idRqv), false);
        var elementRef = document.getElementById(idRadio);
        var inputElementArray = elementRef.getElementsByTagName('input');

        for (var i = 0; i < inputElementArray.length; i++) {
            var inputElement = inputElementArray[i];

            inputElement.checked = false;
            inputElement.disabled = true;
        }
    }
    • Marcado como Resposta Mateus Leonardi quinta-feira, 19 de maio de 2011 12:56
    quinta-feira, 19 de maio de 2011 12:56