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

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

我一直没有定义。


当前回答

如果你正在使用javascript而不是jQuery,你可以使用这个命令:

document.querySelector("input[type='radio'][name=rate]:checked").value;

其他回答

对前面建议功能的改进:

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

如果你正在使用jQuery:

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

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

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

上述操作将产生选中(或也称为选中)单选按钮元素(如果有)的值,否则为空。解决方案的关键是namedItem函数,它专门用于单选按钮。

看到HTMLFormElement。元素,HTMLFormControlsCollection.namedItem,特别是RadioNodeList。作为namedItem通常返回一个RadioNodeList对象。

(我使用MDN是因为它允许人们跟踪标准遵从性,至少在很大程度上是这样,而且因为它比许多WhatWG和W3C出版物更容易理解)

您可以使用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;
    }
}

我使用了jQuery。点击function获得所需的输出:

$('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;
});

希望能有所帮助。