Ho provato vari modi per determinare il valore selezionato di un RadioButtonList in Javascript senza alcuna gioia. Poi ho esaminato l'HTML della pagina Web e ho realizzato che ASP.NET esegue il rendering di un controllo RadioButtonList su una pagina Web come tabella HTML a colonna singola!
<table id="rdolst" border="0">
<tr>
<td><input id="rdolst_0" type="radio" name="rdolst" value="Option 1" /><label for="rdolst_0">Option 1</label></td>
</tr>
<tr>
<td><input id="rdolst_1" type="radio" name="rdolst" value="Option 2" /><label for="rdolst_1">Option 2</label></td>
</tr>
</table>
Per accedere a un ListItem individuale sul RadioButtonList tramite Javascript, è necessario fare riferimento all'interno controlli figlio della cellula (noto come nodi in Javascript) sulla riga corrispondente. Ogni ListItem viene reso come il primo (zero) elemento nella prima cella (zero) sulla sua riga.
Questo esempio scorre il RadioButtonList per visualizzare la SelectedValue:
var pos, rdolst;
for (pos = 0; pos < rdolst.rows.length; pos++) {
if (rdolst.rows[pos].cells[0].childNodes[0].checked) {
alert(rdolst.rows[pos].cells[0].childNodes[0].value);
//^ Returns value of selected RadioButton
}
}
Per selezionare l'ultimo elemento della RadioButtonList, si dovrebbe fare questo:
rdolst.rows[rdolst.rows.length - 1].cells[0].childNodes[0].checked = true;
Quindi, l'interazione con un RadioButtonList in Javascript è molto simile a lavorare con una tabella normale. Come ho detto, ho provato la maggior parte delle altre soluzioni là fuori, ma questa è l'unica che funziona per me.
Questa risposta funziona in modo ottimale se non si conoscono quanti pulsanti radio verranno visualizzati sulla pagina. Grazie! –
Speravo davvero in una risposta più semplice, ma non sono riuscito a trovare nulla di meglio – TruthOf42
grazie mille! mi ha aiutato a fermare la mia confusione :) –