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

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

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

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

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

Ответы [ 13 ]

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

ASP.NET визуализирует таблицу и кучу других разметок вокруг реальных радиовходов. Следующее должно работать: -

 var list = document.getElementById("radios"); //Client ID of the radiolist
 var inputs = list.getElementsByTagName("input");
 var selected;
 for (var i = 0; i < inputs.length; i++) {
      if (inputs[i].checked) {
          selected = inputs[i];
          break;
       }
  }
  if (selected) {
       alert(selected.value);
  }
11 голосов
/ 18 декабря 2012

Попробуйте, чтобы получить выбранное значение из RadioButtonList.

var selectedvalue = $('#<%= yourRadioButtonList.ClientID %> input:checked').val()
3 голосов
/ 24 февраля 2009

Я всегда смотрю на источник. Вы найдете, что каждый элемент переключателя имеет уникальный идентификатор, с которым вы можете работать, и переберите их, чтобы выяснить, какой из них отмечен.

Редактировать: нашел пример. У меня есть список переключателей rbSearch. Это в ascx под названием ReportFilter. В View Source я вижу

ReportFilter1_rbSearch_0
ReportFilter1_rbSearch_1
ReportFilter1_rbSearch_2

Таким образом, вы можете либо перебрать document.getElementById ("ReportFilter1_rbSearch_" + idx), либо воспользоваться оператором switch и посмотреть, какой из них имеет .checked = true.

1 голос
/ 28 февраля 2013

Я хотел бы добавить самое простое решение этой проблемы:

var reasons= document.getElementsByName("<%=RadioButtonList1.UniqueID%>");
var answer;
for (var j = 0; j < reasons.length; j++) {
    if (reason[j].checked) {
        answer = reason[j].value;
    }
}

UniqueID - это свойство, которое дает вам имя входов внутри элемента управления, так что вы можете просто проверить их очень легко.

1 голос
/ 22 декабря 2011
function CheckRadioListSelectedItem(name) {

    var radioButtons = document.getElementsByName(name);
    var Cells = radioButtons[0].cells.length;

    for (var x = 0; x < Cells; x++) {
        if (document.getElementsByName(name + '_' + x)[0].checked) {
            return x;
        }
    }

    return -1;
}
1 голос
/ 07 июля 2010

Для 'RadioButtonList только с 2 значениями' да 'и' нет 'я сделал это:

var chkval=document.getElemenById("rdnPosition_0")

Здесь rdnposition_0 относится к идентификатору yes ListItem. Я получил его, просмотрев исходный код формы.

Тогда я сделал chkval.checked, чтобы узнать, проверяется ли значение «Да».

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

HTML-эквивалент ASP.NET RadioButtonList - это набор с тем же атрибутом имени (на основе свойства ID RadioButtonList).

Вы можете получить доступ к этой группе переключателей, используя getElementsByName. Это коллекция переключателей, доступ к которым осуществляется через их указатель.

alert( document.getElementsByName('RadioButtonList1') [0].checked );
1 голос
/ 24 февраля 2009

RadioButtonList - это серверный элемент управления ASP.NET. Это отображает HTML в браузере, который включает переключатель, которым вы пытаетесь манипулировать с помощью JavaScript.

Я бы рекомендовал использовать что-то вроде IE Developer Toolbar (если вы предпочитаете Internet Explorer) или Firebug (если вы предпочитаете FireFox), чтобы проверить вывод HTML и найти идентификатор. переключателя, которым вы хотите манипулировать в JavaScript.

Затем вы можете использовать document.getElementByID("radioButtonID").checked из JavaScript, чтобы узнать, выбран переключатель или нет.

0 голосов
/ 28 февраля 2019

Чтобы проверить выбранный индекс выпадающего в JavaScript:

function SaveQuestion() {
    var ddlQues = document.getElementById("<%= ddlQuestion.ClientID %>");
    var ddlSubQues = document.getElementById("<%=ddlSecondaryQuestion.ClientID%>");

    if (ddlQues.value != "" && ddlSubQues.value != "") {
        if (ddlQues.options[ddlQues.selectedIndex].index != 0 ||
            ddlSubQues.options[ddlSubQues.selectedIndex].index != 0) {
            return true;
        } else {
            return false;
        }
    } else {
        alert("Please select the Question or Sub Question.");
        return false;
    }
}
0 голосов
/ 07 сентября 2016

Я хотел выполнить скрипт ShowShouldWait, только если Page_ClientValidate был true. В конце скрипта возвращается значение b, чтобы предотвратить событие postback в случае, если оно недопустимо.

Если кому-то интересно, вызов ShouldShowWait используется только для показа «пожалуйста, подождите» div, если выбран тип вывода «HTML», а не «CSV».

onclientclick="var isGood = Page_ClientValidate('vgTrxByCustomerNumber');if(isGood){ShouldShowWait('optTrxByCustomer');} return isGood"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...