Usuário com melhor resposta
Ativar/desativar RadioButtonList via Javascript.

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.
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
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 ...
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,
-
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
-
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