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;

レート要素は である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 で実装されたことに注意してください (他の主要なブラウザーはすべてサポートしているようです)。RadioNodeList古いブラウザでは、これが正しく機能するためにpolfyill が必要です。

于 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 に答える
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 を使用するのは、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

ラジオボタンを何度も直接呼び出すと、CHECKED ボタンではなく、FIRST ボタンの値が得られます。ラジオボタンをループしてどれがチェックされているかを確認する代わりに、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 ボタンを有効にします)。

于 2013-12-13T11:31:20.473 に答える
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 に答える
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 rates = document.getElementById('rates').value;

そのようなラジオボタンの値を取得することはできません代わりに使用します

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