He intentado varias formas de determinar el SelectedValue de RadioButtonList en Javascript sin ninguna alegría. Luego miré el HTML de la página web y me di cuenta de que ASP.NET representa un control RadioButtonList en una página web como una tabla HTML de una sola columna.
<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>
Para acceder a una ListItem individual en el RadioButtonList a través de JavaScript, es necesario hacer referencia a ella en los controles secundarios de la célula (conocida como nodos en Javascript) en la fila correspondiente. Cada ListItem se representa como el primer elemento (cero) en la primera celda (cero) en su fila.
Este ejemplo se recorre la RadioButtonList para mostrar 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
}
}
Para seleccionar el último elemento de la RadioButtonList, que podría hacer esto:
rdolst.rows[rdolst.rows.length - 1].cells[0].childNodes[0].checked = true;
Así que interactúa con un RadioButtonList en Javascript es muy parecido a trabajar con una mesa normal. Como dije, probé la mayoría de las otras soluciones, pero esta es la única que funciona para mí.
Esta respuesta funciona mejor si no sabe cuántos botones de radio tendrá en la página. Gracias! –
Realmente esperaba una respuesta más simple, pero no pude encontrar nada mejor – TruthOf42
¡muchas gracias! me ayudó a detener mi confusión :) –