Как я могу определить SelectedValue RadioButtonList в JavaScript? - PullRequest
13 голосов
/ 24 февраля 2009

У меня есть веб-страница ASP.NET с привязанным к базе данных RadioButtonList. Я не знаю, сколько переключателей будет отображаться во время разработки. Мне нужно определить SelectedValue на клиенте с помощью JavaScript. Я попробовал следующее без особой удачи:

var reasonCode = document.getElementById("RadioButtonList1");
var answer = reasonCode.SelectedValue;  

(«ответ» возвращается как «неопределенный») Пожалуйста, прости мое незнание JavaScript, но что я делаю не так?

Заранее спасибо.

Ответы [ 13 ]

0 голосов
/ 04 октября 2013

Я пробовал разные способы определения 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 очень похоже на работу с обычной таблицей. Как я уже говорил, я пробовал большинство других решений, но это единственное, которое работает для меня.

0 голосов
/ 24 февраля 2009

С здесь :

if (RadioButtonList1.SelectedIndex > -1) 
{
    Label1.Text = "You selected: " + RadioButtonList1.SelectedItem.Text;
}
0 голосов
/ 24 февраля 2009
reasonCode.options[reasonCode.selectedIndex].value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...