我到处寻找并试图从一组单选按钮中获取所选值。
这是我的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;
我一直未定义。
答案 0 :(得分:416)
这适用于IE9及更高版本以及所有其他浏览器。
document.querySelector('input[name="rate"]:checked').value;
答案 1 :(得分:211)
var rates = document.getElementById('rates').value;
费率元素是div
,因此它没有值。这可能是undefined
来自的地方。
checked
属性将告诉您元素是否被选中:
if (document.getElementById('r1').checked) {
rate_value = document.getElementById('r1').value;
}
答案 2 :(得分:124)
您可以使用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;
}
}
答案 3 :(得分:30)
对于生活在边缘的人们:
现在有一个叫RadioNodeList的东西,访问它的value属性将返回当前检查输入的值。这样就无需先过滤掉已检查过的&#39;正如我们在许多发布的答案中看到的那样输入。
示例表格
<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才能正常运行
答案 4 :(得分:10)
另一个(显然更旧)选项是使用以下格式: &#34; document.nameOfTheForm.nameOfTheInput.value;&#34; 例如的 document.mainForm.rads.value; 强>
document.mainForm.onclick = function(){
var radVal = document.mainForm.rads.value;
result.innerHTML = 'You selected: '+radVal;
}
&#13;
<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>
&#13;
您可以在表单中按名称引用元素。您的原始HTML不包含表单元素。
这里的小提琴(适用于Chrome和Firefox): https://jsfiddle.net/Josh_Shields/23kg3tf4/1/
答案 5 :(得分:10)
下面是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
答案 6 :(得分:6)
使用 document.querySelector('input [type = radio]:checked')。value; 来获取所选复选框的值,您可以使用其他属性来获取值,如 name =性别等请通过下面的代码片段肯定会对您有所帮助,
解决方案
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>
感谢您
答案 7 :(得分:5)
在Javascript中,我们可以使用您在上面发布的代码中包含名称而非Id的“ getElementById()
”来获取值
所以你要像这样修改
if (document.getElementById('r1').checked) {
rate_value = document.getElementById('r1').value;
}
根据您的代码使用此rate_value
答案 8 :(得分: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
}
}
答案 9 :(得分:5)
假设您的表单元素由下面的myForm
变量引用,并且您的单选按钮共享名称“my-radio-button-group-name”,以下是纯JavaScript和标准兼容(尽管我没有检查它到处都可用):
myForm.elements.namedItem("my-radio-button-group-name").value
以上将产生已检查(或选择,也称为选中)单选按钮元素(如果有)的值,否则为null
。解决方案的关键是namedItem
功能,它专门用于单选按钮。
请参阅HTMLFormElement.elements,HTMLFormControlsCollection.namedItem,尤其是RadioNodeList.value,因为namedItem
通常会返回RadioNodeList
个对象。
我使用MDN是因为它允许跟踪标准合规性,至少在很大程度上,并且因为它比许多WhatWG和W3C出版物更容易理解。
答案 10 :(得分:4)
HTML CODE:
<input type="radio" name="rdoName" value="YES"/>
<input type="radio" name="rdoName" value="NO"/>
JQUERY CODE:
var value= $("input:radio[name=rdoName]:checked").val();
$("#btnSubmit").click(function(){
var value=$("input:radio[name=rdoName]:checked").val();
console.log(value);
alert(value);
})
&#13;
<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"/>
&#13;
你会得到
value="YES" //if checked Radio Button with the value "YES"
value="NO" //if checked Radio Button with the value "NO"
答案 11 :(得分:3)
多次直接调用单选按钮会为您提供FIRST按钮的值,而不是CHECKED按钮。而不是循环通过单选按钮来查看哪一个被选中,我更喜欢调用一个onclick
javascript函数来设置一个随后可以随意检索的变量。
<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按钮)。
答案 12 :(得分:2)
[...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>
答案 13 :(得分:2)
我对纯JavaScript的这个问题是找到已检查的节点,找到它的值并从数组中弹出。
var Anodes = document.getElementsByName('A'),
AValue = Array.from(Anodes)
.filter(node => node.checked)
.map(node => node.value)
.pop();
console.log(AValue);
请注意,我正在使用arrow functions。 有关工作示例,请参阅此fiddle。
答案 14 :(得分: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;
}
答案 15 :(得分:1)
只需使用:document.querySelector('input[rate][checked]').value
答案 16 :(得分:1)
您可以使用.find()
选择已选中的元素:
var radio = Array.from(document.querySelectorAll('#rate input'))
var value = radio.length && radio.find(r => r.checked).value
答案 17 :(得分:1)
如果您使用的是jQuery:
$('input[name="rate"]:checked').val();
答案 18 :(得分:0)
按ID检查值:
var CheckedValues = ($("#r1").is(':checked')) ? 1 : 0;
答案 19 :(得分: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;
});
希望它有所帮助。
答案 20 :(得分:0)
如果按钮的形式为
var myform = new FormData(getformbywhatever);
myform.get("rate");
上面的QuerySelector是一个更好的解决方案。但是,这种方法很容易理解,特别是如果你没有关于CSS的线索。另外,无论如何,输入字段很可能是一种形式
没有检查,还有其他类似的解决方案,抱歉重复
答案 21 :(得分:0)
var rates = document.getElementById('rates').value;
无法获得像这样的单选按钮的值而是使用
rate_value = document.getElementById('r1').value;
答案 22 :(得分:0)
如果您使用的是JQuery
,请将下面的代码段用于单选按钮组。
var radioBtValue= $('input[type=radio][name=radiobt]:checked').val();
答案 23 :(得分: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;
答案 24 :(得分:0)
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>
答案 25 :(得分:0)
您还可以在元素上使用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;
}
});
答案 26 :(得分:-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);`
答案 27 :(得分:-1)
在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/>
}