Я пробовал разные способы определения SelectedValue RadioButtonList в Javascript без радости. Затем я посмотрел HTML-код веб-страницы и понял, что ASP.NET отображает элемент управления RadioButtonList на веб-странице в виде таблицы HTML с одним столбцом!
<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>
Чтобы получить доступ к отдельному элементу ListItem в RadioButtonList через Javascript, вам необходимо сослаться на него в дочерних элементах управления ячейки (известных как узлы в Javascript) в соответствующей строке. Каждый ListItem отображается как первый (нулевой) элемент в первой (нулевой) ячейке своей строки.
Этот пример циклически перебирает RadioButtonList для отображения 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
}
}
Чтобы выбрать последний элемент в RadioButtonList, вы должны сделать это:
rdolst.rows[rdolst.rows.length - 1].cells[0].childNodes[0].checked = true;
Таким образом, взаимодействие с RadioButtonList в Javascript очень похоже на работу с обычной таблицей. Как я уже говорил, я пробовал большинство других решений, но это единственное, которое работает для меня.