如何获得所选单选按钮的价值?

JavaScript HTML

DavaidTony宝儿

2020-03-24

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

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

我一直不确定。

第3332篇《如何获得所选单选按钮的价值?》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

8个回答
达蒙樱 2020.03.24

如果按钮采用
var myform = new FormData(getformbywhatever); myform.get("rate");
QuerySelector 形式,则是更好的解决方案。但是,这种方法很容易理解,尤其是在您对CSS不了解的情况下。另外,输入字段很可能还是采用某种形式。
没有检查,还有其他类似的解决方案,对不起,重复

L猴子 2020.03.24
<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;
老丝阿飞 2020.03.24

对以前建议的功能的改进:

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;
}
Tom卡卡西 2020.03.24

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

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

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

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

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

Stafan路易 2020.03.24

多次直接调用单选按钮会为您提供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; 
}

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

达蒙GO 2020.03.24

HTML代码:

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

JQUERY代码:

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"
樱小胖Mandy 2020.03.24

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)

番长 2020.03.24

对于生活在边缘的人们:

现在有一个称为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中实现的(所有其他主流浏览器似乎都支持它)。较旧的浏览器将需要使用polfyill RadioNodeList才能正常运行

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android