简体   繁体   English

使用javascript循环通过asp.net单选按钮列表以获取选定的值和文本

[英]using javascript to loop through asp.net radio button list to get selected value and text

I am creating a questions and answers page and the answers are a collection of asp.net radiobuttonlist as per the following: ` 我正在创建一个问答页面,答案是如下所示的asp.net单选按钮列表的集合:

<div class="col-md-4">
                <asp:RadioButtonList ID="Q1AnswersRadioButtonList" runat="server" RepeatLayout="Flow">
                    <asp:ListItem Value="Q1OptionARadioButton"></asp:ListItem>
                    <asp:ListItem Value="Q1OptionBRadioButton"></asp:ListItem>
                    <asp:ListItem Value="Q1OptionCRadioButton"></asp:ListItem>
                    <asp:ListItem Value="Q1OptionDRadioButton"></asp:ListItem>
                </asp:RadioButtonList>
                <br />
                &nbsp;<textarea class="text-danger" id="Q1CorrectAnswerText" name="Q1CorrectAnswerText" readonly="readonly" wrap="soft"></textarea>
            </div>

Now, I am using the following JavaScript function to loop through to find out which one the user selected. 现在,我正在使用以下JavaScript函数来循环查找用户选择的那个。 The following is the JavaScript code. 以下是JavaScript代码。

function GetUserAnswerOneSelection()
{
var elementRef = document.getElementById('Q1AnswersRadioButtonList');
var radioButtonListArray = elementRef.getElementsByTagName('input');
var checkedValues = '';

for (var i = 0; i < radioButtonListArray.length; i++) {
    var radioButtonRef = radioButtonListArray[i];

    if (radioButtonRef.checked == true) {
        // To get the Text property, use this code:
        var labelArray =   radioButtonRef.parentNode.getElementsByTagName('label');
        if (labelArray.length > 0) {
            if (checkedValues.length > 0)
                checkedValues += ', ';
            checkedValues += labelArray[i].innerHTML;
        }
    }
}

userAnswer1 = checkedValues;
return userAnswer1;

} }

The problem now is, it always breaks on this line var radioButtonListArray = elementRef.getElementsByTagName('input'); 现在的问题是,它总是在此行中断var radioButtonListArray = elementRef.getElementsByTagName('input'); and reports that is undefined. 并报告未定义的 I need help please. 我需要帮助。

Try to put ClientIDMode="Static" in asp:RadioButtonList so you are able to get it in Javascript. 尝试将ClientIDMode="Static"放在asp:RadioButtonList以便可以使用Javascript获得它。

or do: 或执行:

var elementRef = document.getElementById('<%= Q1AnswersRadioButtonList.ClientID %>');**

This works for me 这对我有用

function GetUserAnswerOneSelection() {
            var elementRef = document.getElementById("Q1AnswersRadioButtonList");
            var radioButtonListArray = elementRef.getElementsByTagName('input');
            var checkedValues = '';

            for (var i = 0; i < radioButtonListArray.length; i++) {
                var radioButtonRef = radioButtonListArray[i];

                if (radioButtonRef.checked == true) {
                    // To get the Text property, use this code:
                    var labelArray = radioButtonRef.parentNode.getElementsByTagName('label');
                    if (labelArray.length > 0) {
                        if (checkedValues.length > 0)
                            checkedValues += ', ';
                        checkedValues += labelArray[i].innerHTML;
                    }
                }
            }

            userAnswer1 = checkedValues;              
        }

   <asp:RadioButtonList ID="Q1AnswersRadioButtonList" runat="server" RepeatLayout="Flow" ClientIDMode="Static">
        <asp:ListItem Value="Q1OptionARadioButton"></asp:ListItem>
        <asp:ListItem Value="Q1OptionBRadioButton"></asp:ListItem>
        <asp:ListItem Value="Q1OptionCRadioButton"></asp:ListItem>
        <asp:ListItem Value="Q1OptionDRadioButton"></asp:ListItem>
    </asp:RadioButtonList>

Or You can get it in one line using JQuery like 或者您可以使用JQuery在一行中获取它,例如

 $(document).ready(function () {

            $("#Q1AnswersRadioButtonList input").click(function () {
                GetUserAnswerOneSelection();

                alert( $("#Q1AnswersRadioButtonList input:checked").next("label").html());
            });

        });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM