393

我想从一组单选按钮中获取选定的值。

这是我的 HTML:

<div id="rates">
  <input type="radio" id="r1" name="rate" value="Fixed Rate"> Fixed Rate
  <input type="radio" id="r2" name="rate" value="Variable Rate"> Variable Rate
  <input type="radio" id="r3" name="rate" value="Multi Rate" checked="checked"> Multi Rate  
</div>

这是我的js:

var rates = document.getElementById('rates').value;
var rate_value;
if(rates =='Fixed Rate'){
    rate_value = document.getElementById('r1').value;
    
}else if(rates =='Variable Rate'){
    rate_value = document.getElementById('r2').value;
    
}else if(rates =='Multi Rate'){
    rate_value = document.getElementById('r3').value;
}  

document.getElementById('results').innerHTML = rate_value;

我一直不确定。

4

30 回答 30

652

这适用于 IE9 及更高版本以及所有其他浏览器。

document.querySelector('input[name="rate"]:checked').value;
于 2013-04-05T16:59:04.617 回答
296
var rates = document.getElementById('rates').value;

rate 元素是 a div,因此它没有值。这可能是undefined它的来源。

checked属性会告诉你元素是否被选中:

if (document.getElementById('r1').checked) {
  rate_value = document.getElementById('r1').value;
}

或者

$("input[type='radio'][name='rate']:checked").val();
于 2013-04-05T16:50:19.437 回答
155

您可以使用该checked属性获取值。

var rates = document.getElementsByName('rate');
var rate_value;
for(var i = 0; i < rates.length; i++){
    if(rates[i].checked){
        rate_value = rates[i].value;
    }
}
于 2013-04-05T16:48:22.567 回答
43

对于生活在边缘的人们:

现在有一个叫做RadioNodeList的东西,访问它的 value 属性将返回当前检查的输入的值。正如我们在许多发布的答案中看到的那样,这将消除首先过滤掉“已检查”输入的必要性。

示例表格

<form id="test">
<label><input type="radio" name="test" value="A"> A</label>
<label><input type="radio" name="test" value="B" checked> B</label>
<label><input type="radio" name="test" value="C"> C</label>
</form>

要检索检查的值,您可以执行以下操作:

var form = document.getElementById("test");
alert(form.elements["test"].value);

JSFiddle 来证明它:http: //jsfiddle.net/vjop5xtq/

请注意,这是在 Firefox 33 中实现的(所有其他主要浏览器似乎都支持它)。较旧的浏览器需要 polfyillRadioNodeList才能正常运行

于 2014-10-07T12:46:21.193 回答
17

下面从 api.jquery.com 给出了为我工作的那个。

HTML

<input type="radio" name="option" value="o1">option1</input>
<input type="radio" name="option" value="o2">option2</input>

JavaScript

var selectedOption = $("input:radio[name=option]:checked").val()

变量 selectedOption 将包含所选单选按钮的值(即)o1 或 o2

于 2016-05-23T13:15:17.773 回答
15

另一个(显然较旧)选项是使用格式:“document.nameOfTheForm.nameOfTheInput.value;” 例如document.mainForm.rads.value;

document.mainForm.onclick = function(){
    var radVal = document.mainForm.rads.value;
    result.innerHTML = 'You selected: '+radVal;
}
<form id="mainForm" name="mainForm">
    <input type="radio" name="rads" value="1" />
    <input type="radio" name="rads" value="2" />
    <input type="radio" name="rads" value="3" />
    <input type="radio" name="rads" value="4" />
</form>
<span id="result"></span>

您可以在表单中通过其名称来引用元素。但是,您的原始 HTML 不包含表单元素。

在这里小提琴(在 Chrome 和 Firefox 中工作): https ://jsfiddle.net/Josh_Shields/23kg3tf4/1/

于 2015-02-27T14:43:53.473 回答
12

使用document.querySelector('input[type = radio]:checked').value; 要获取选定复选框的值,您可以使用其他属性来获取值,例如名称 = 性别 等。请通过 下面的代码段肯定会对您有所帮助,

解决方案

document.mainForm.onclick = function(){
    var gender = document.querySelector('input[name = gender]:checked').value;
    result.innerHTML = 'You Gender: '+gender;
}
<form id="mainForm" name="mainForm">
    <input type="radio" name="gender" value="Male" checked/>Male
    <input type="radio" name="gender" value="Female" />Female
    <input type="radio" name="gender" value="Others" />Others
</form>
<span id="result"></span>

谢谢你

于 2017-11-20T12:20:10.793 回答
10

HTML 代码:

<input type="radio" name="rdoName" value="YES"/> <input type="radio" name="rdoName" value="NO"/>

查询代码:

var value= $("input:radio[name=rdoName]:checked").val();

$("#btnSubmit").click(function(){
var value=$("input:radio[name=rdoName]:checked").val();
console.log(value);
alert(value);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="radio" name="rdoName" value="YES"/> YES
<input type="radio" name="rdoName" value="NO"/> NO
<br/>
<input type="button"id="btnSubmit"value="Which one Selected"/>

你会得到

value="YES" //if checked Radio Button with the value "YES"
value="NO" //if checked Radio Button with the value "NO"
于 2018-05-25T12:49:33.523 回答
6

getElementById()在Javascript中,我们可以通过在您发布的上述代码中使用Id的“”来获取值,其中包含名称而不是Id,因此您可以像这样修改

if (document.getElementById('r1').checked) {
  rate_value = document.getElementById('r1').value;
}

根据您的代码使用此 rate_value

于 2013-10-08T07:45:06.237 回答
5

自从提出问题以来已经过去了一年左右,但我认为答案的实质性改进是可能的。我发现这是最简单和最通用的脚本,因为它会检查按钮是否被选中,如果是,它的值是什么:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Check radio checked and its value</title>
</head>
<body>

    <form name="theFormName">
        <input type="radio" name="theRadioGroupName" value="10">
        <input type="radio" name="theRadioGroupName" value="20">
        <input type="radio" name="theRadioGroupName" value="30">
        <input type="radio" name="theRadioGroupName" value="40">
        <input type="button" value="Check" onclick="getRadioValue('theRadioGroupName')">
    </form>

    <script>
        function getRadioValue(groupName) {
            var radios = theFormName.elements[groupName];
            window.rdValue; // declares the global variable 'rdValue'
            for (var i=0; i<radios.length; i++) {
                var someRadio = radios[i];
                if (someRadio.checked) {
                    rdValue = someRadio.value;
                    break;
                }
                else rdValue = 'noRadioChecked';
            }
            if (rdValue == '10') {
                alert('10'); // or: console.log('10')
            }
            else if (rdValue == 'noRadioChecked') {
                alert('no radio checked');
            }
        }
    </script>
</body>
</html>

您还可以在另一个函数中调用该函数,如下所示:

function doSomething() {
    getRadioValue('theRadioGroupName');
    if (rdValue == '10') {
        // do something
    }
    else if (rdValue == 'noRadioChecked') {
        // do something else
    }  
} 
于 2014-05-20T17:47:01.893 回答
5

假设您的表单元素由myForm下面的变量引用,并且您的单选按钮共享名称“my-radio-button-group-name”,以下是纯 JavaScript 和标准兼容(尽管我没有检查它是否在任何地方都可用):

myForm.elements.namedItem("my-radio-button-group-name").value

以上将产生一个选中的(或选择的,也称为)单选按钮元素的值,如果有的话,或者null其他。解决方案的关键是namedItem专门与单选按钮配合使用的功能。

请参阅HTMLFormElement.elementsHTMLFormControlsCollection.namedItem,尤其是RadioNodeList.value,因为namedItem 通常返回一个RadioNodeList对象。

我使用 MDN 是因为它允许人们至少在很大程度上跟踪标准合规性,并且因为它比许多 WhatWG 和 W3C 出版物更容易理解。

于 2016-06-03T13:28:40.203 回答
4

最短的

[...rates.children].find(c=>c.checked).value

let v= [...rates.children].find(c=>c.checked).value

console.log(v);
<div id="rates">
  <input type="radio" id="r1" name="rate" value="Fixed Rate"> Fixed Rate
  <input type="radio" id="r2" name="rate" value="Variable Rate"> Variable Rate
  <input type="radio" id="r3" name="rate" value="Multi Rate" checked="checked"> Multi Rate  
</div>

于 2020-07-20T22:20:07.093 回答
3

多次直接调用单选按钮会为您提供 FIRST 按钮的值,而不是 CHECKED 按钮。而不是循环通过单选按钮来查看哪个被选中,我更喜欢调用一个onclickjavascript函数来设置一个以后可以随意检索的变量。

<input type="radio" onclick="handleClick(this)" name="reportContent" id="reportContent" value="/reportFleet.php" >

调用:

var currentValue = 0;
function handleClick(myRadio) {
    currentValue = myRadio.value;
    document.getElementById("buttonSubmit").disabled = false; 
}

另一个优点是我可以处理数据和/或对按钮的检查做出反应(在这种情况下,启用提交按钮)。

于 2013-12-13T11:31:20.473 回答
3

您还可以在元素上使用 forEach 循环遍历按钮

    var elements = document.getElementsByName('radioButton');
    var checkedButton;
    console.log(elements);
    elements.forEach(e => {
        if (e.checked) {
            //if radio button is checked, set sort style
            checkedButton = e.value;
        }
    });
于 2019-12-07T00:05:17.687 回答
2

对先前建议功能的改进:

function getRadioValue(groupName) {
    var _result;
    try {
        var o_radio_group = document.getElementsByName(groupName);
        for (var a = 0; a < o_radio_group.length; a++) {
            if (o_radio_group[a].checked) {
                _result = o_radio_group[a].value;
                break;
            }
        }
    } catch (e) { }
    return _result;
}
于 2014-07-25T18:02:56.833 回答
2

您可以使用.find()来选择选中的元素:

var radio = Array.from(document.querySelectorAll('#rate input'))

var value = radio.length && radio.find(r => r.checked).value
于 2016-10-18T11:16:07.357 回答
2

我对纯 javascript 的这个问题的看法是找到选中的节点,找到它的值并将其从数组中弹出。

var Anodes = document.getElementsByName('A'),
    AValue = Array.from(Anodes)
       .filter(node => node.checked)
       .map(node => node.value)
       .pop();
console.log(AValue);

请注意,我使用的是箭头函数。请参阅此小提琴以获取工作示例。

于 2017-11-21T10:45:52.087 回答
2

如果你使用没有 jQuery 的 javascript,你可以使用这个命令:

document.querySelector(`input[type="radio"][name=rate]:checked`).value
于 2021-08-24T15:41:38.233 回答
1

如果您使用的是 jQuery:

$('input[name="rate"]:checked').val();

于 2016-02-23T09:18:43.503 回答
0
<form id="rates">
  <input type="radio" name="rate" value="Fixed Rate"> Fixed
  <input type="radio" name="rate" value="Variable Rate"> Variable
  <input type="radio" name="rate" value="Multi Rate" checked> Multi
</form>

然后...

var rate_value = rates.rate.value;
于 2017-01-15T00:06:34.103 回答
0

按 ID 检查值:

var CheckedValues = ($("#r1").is(':checked')) ? 1 : 0;
于 2017-02-28T07:10:59.213 回答
0

我使用 jQuery.click 函数来获得所需的输出:

$('input[name=rate]').click(function(){
  console.log('Hey you clicked this: ' + this.value);

  if(this.value == 'Fixed Rate'){
    rate_value = $('#r1').value;
  } else if(this.value =='Variable Rate'){
   rate_value = $('#r2').value;
  } else if(this.value =='Multi Rate'){
   rate_value = $('#r3').value;
  }  

  $('#results').innerHTML = rate_value;
});

希望能帮助到你。

于 2017-04-28T07:27:59.407 回答
0

如果按钮的形式
var myform = new FormData(getformbywhatever); myform.get("rate");
是上面的 QuerySelector 是一个更好的解决方案。但是,这种方法很容易理解,尤其是在您对 CSS 没有任何了解的情况下。另外,输入字段很可能无论如何都在表单中。
没查,还有其他类似的解决方法,抱歉重复

于 2017-04-29T19:47:22.090 回答
0
var rates = document.getElementById('rates').value;

无法获得这样的单选按钮的值,而是使用

rate_value = document.getElementById('r1').value;
于 2017-06-06T12:04:17.913 回答
0

如果您使用的是JQuery,请使用下面的代码段作为单选按钮组。

var radioBtValue= $('input[type=radio][name=radiobt]:checked').val();
于 2017-06-28T10:21:23.930 回答
0

只需使用:document.querySelector('input[rate][checked]').value

于 2017-08-31T07:43:12.933 回答
0

这是一个将单选按钮置于常量中并仅在需要时获取所选值的解决方案。

const rates = document.forms.rates.elements["rate"]
showRate()
function showRate(){
    document.getElementById('results').innerHTML = rates.value
}
<form id="rates" onchange="showRate()">
  <input type="radio" id="r1" name="rate" value="Fixed Rate"> Fixed Rate
  <input type="radio" id="r2" name="rate" value="Variable Rate"> Variable Rate
  <input type="radio" id="r3" name="rate" value="Multi Rate" checked="checked"> Multi Rate 
</form>
<div id="results"></div>

于 2021-09-24T02:18:43.207 回答
-1

https://codepen.io/anon/pen/YQxbZJ

的HTML

<div id="rates">
<input type="radio" id="x1" name="rate" value="Fixed Rate"> Fixed Rate
<input type="radio" id="x2" name="rate" value="Variable Rate" 
checked="checked"> Variable Rate
<input type="radio" id="x3" name="rate" value="Multi Rate" > Multi Rate
</div>

<button id="rdio"> Check Radio </button>
<div id="check">

</div>

JS

var x ,y;
var x = document.getElementById("check");
function boom()
{
if (document.getElementById("x1").checked)
  y = document.getElementById("x1").value;

else if(document.getElementById("x2").checked)
  y = document.getElementById("x2").value;

else if (document.getElementById("x3").checked)
  y = document.getElementById("x3").value;
else
  y = "kuch nhi;"
x.innerHTML = y;
}

var z = document.getElementById('rdio');
z.addEventListener("click", boom);`
于 2017-06-24T12:54:21.043 回答
-1

   var rates=document.getElementsByName("rate");
            for (i = 0; i < rates.length; i++) {
            if (rates[i].checked) {
              console.log(rates[i].value);
              rate=rates[i].value;
              document.getElementById("rate").innerHTML = rate;
              alert(rate);
              
            }
          }
        <div id="rates">
          <input type="radio" id="r1" name="rate" value="Fixed Rate"> Fixed Rate
          <input type="radio" id="r2" name="rate" value="Variable Rate"> Variable Rate
          <input type="radio" id="r3" name="rate" value="Multi Rate" checked="checked"> Multi Rate  
        </div>
        </br>
        <div id='rate'>
        </div>

于 2019-01-23T09:58:37.837 回答
-3

在 php 中它是非常简单的
html 页面

Male<input type="radio" name="radio" value="male"><br/>
Female<input type="radio" name="radio" value="female"><br/>
Others<input type="radio" name="radio" value="other"><br/>
<input type="submit" value="submit">

从表单获取价值到 php

$radio=$_POST['radio'];<br/>
use php if(isset($_POST['submit']))<br/>
{<br/>
echo "you selected".$radio."thank u";<br/>
}
于 2018-07-19T11:35:20.050 回答