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

这是我的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;

我一直没有定义。


当前回答

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

document.mainForm.onclick = function(){ var radVal = document.mainForm.rads.value; result.innerHTML = '你选择了: '+radVal; } <form id=“mainForm” name=“mainForm”> <输入类型=“无线电” 名称=“rads” 值=“1” /> <输入类型=“收音机” 名称=“rads” 值=“2” /> <输入类型=“无线电” 名称=“rads” 值=“3” /> <输入类型=“收音机” 名称=“rads” 值=“4” /> </form> <span id=“result”></span>

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

这里(适用于Chrome和Firefox): https://jsfiddle.net/Josh_Shields/23kg3tf4/1/

其他回答

对前面建议功能的改进:

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;
}

按ID检查值:

var CheckedValues = ($("#r1").is(':checked')) ? 1 : 0;

对于生活在边缘的人们:

现在有一个叫做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中实现的(所有其他主要浏览器似乎都支持它)。旧的浏览器将需要一个RadioNodeList的polfyill来正常工作

在php中,这很简单 html页面

男性<输入类型=“收音机” 名称=“收音机” 值=“男性”><br/> 母<输入类型=“收音机” 名称=“收音机” 值=“母”><br/> 其他<输入类型=“无线电” 名称=“无线电” 值=“其他”><br/> <输入类型=“提交”值=“提交”>

从表单到php取值

$radio=$_POST['radio'];<br/>
use php if(isset($_POST['submit']))<br/>
{<br/>
echo "you selected".$radio."thank u";<br/>
}

我对这个问题的纯javascript是找到检查节点,找到它的值,并弹出它从数组。

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

注意,我使用的是箭头函数。 看看这把小提琴的工作例子。