web-dev-qa-db-ja.com

選択したラジオボタンの値を取得する方法

私は至る所を見て、ラジオボタンのグループから選択された値を得るためにすべてを試みました。

これが私の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;

未定義になり続けます。

266
ZombieBatman
var rates = document.getElementById('rates').value;

Rates要素はdivなので、値はありません。おそらくこれがundefinedの由来です。

checkedプロパティは、要素が選択されているかどうかを教えてくれます:

if (document.getElementById('r1').checked) {
  rate_value = document.getElementById('r1').value;
}
201
Joe F

これはIE 9以上および他のすべてのブラウザで動作します。

document.querySelector('input[name="rate"]:checked').value;
390
Parthik Gosar

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

あなたがEdgeに住んでいる人たちのために:

RadioNodeList という名前のものがあり、そのvalueプロパティにアクセスすると、現在チェックされている入力の値が返されます。これにより、投稿された回答の多くに見られるように、最初に 'checked'入力を除外する必要がなくなります。 

フォーム例

<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が必要になります。

25
Daniel

私のために働いたものは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)が入ります。

9
Malathy

別の(明らかに古い)選択肢は、フォーマットを使用することである:[...] [document。 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/

9
JHS

document.querySelector( 'input [type = radio]:checked')。value;を使用して、選択したチェックボックスの値を取得し、他の属性を使用してname = genderなどをご覧くださいスニペットの下に間違いなく役立つでしょう、

溶液

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>

ありがとうございました

8
pawan vedak

質問が出されてから1年ほど経ちましたが、答えの大幅な改善が可能であると思いました。ボタンがチェックされているかどうか、またチェックされている場合はその値が何であるかをチェックするので、これが最も簡単で汎用性の高いスクリプトです。 

<!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
    }  
} 
4
Frank Conijn

あなたのフォーム要素が以下のmyForm変数によって参照され、あなたのラジオボタンが "my-radio-button-group-name"という名前を共有すると仮定すると、以下は純粋なJavaScriptと規格に準拠します。どこにでも):

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

上記の場合は、 checked (または選択されているので選択されている)ラジオボタン要素がある場合はその値、それ以外の場合はnullの値になります。解決策の核心は、ラジオボタンで特に機能するnamedItem関数です。

HTMLFormElement.elementsHTMLFormControlsCollection.namedItem 、特に RadioNodeList.value を参照してください。namedItem 通常 RadioNodeListオブジェクトを返します。

私はMDNを使用しています。なぜなら、少なくともある程度までは、標準への準拠を追跡することができ、そして多くのWhatWGおよびW3Cの出版物よりも理解しやすいからです。

4
amn

Javascriptでは、上のコードでIdの "getElementById()"にId ではなくnameが含まれているので、値を取得することができます。

if (document.getElementById('r1').checked) {
  rate_value = document.getElementById('r1').value;
}

コードに従ってこのrate_valueを使用してください。

4
pradeep

HTMLコード:

<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);
})
<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"
3
user8590818

ラジオボタンを直接何度も呼び出すと、[確認]ボタンではなく、[最初の]ボタンの値が表示されます。どのラジオボタンでチェックされているかを確認するためにラジオボタンをループするのではなく、後で自由に検索できる変数を設定する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ボタンを有効にします)。

3
tony gil

以前に提案された機能の改良

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

.find()を使ってチェックされた要素を選択することができます。

var radio = Array.from(document.querySelectorAll('#rate input'))

var value = radio.length && radio.find(r => r.checked).value
1
Yukulélé

単に使用してください:document.querySelector('input[rate][checked]').value

1
mahdavipanah

JQueryを使用している場合

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

純粋なjavascriptを使ってこの問題を解決するには、チェックされたノードを見つけ、その値を見つけ、それを配列から取り出します。

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

arrow関数 を使用していることに注意してください。実用的な例については、この fiddle を参照してください。

1
pongi

   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>

0

JQueryを使用している場合は、ラジオボタンのグループに以下のスニペットを使用してください。

var radioBtValue= $('input[type=radio][name=radiobt]:checked').val();
0
Surendra K
<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;
0
user7420100

必要な出力を取得するために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;
});

それが役に立てば幸い。

0
Animesh Singh

ボタンがフォーム内にある場合
var myform = new FormData(getformbywhatever); myform.get("rate");
上記のQuerySelectorはより良い解決策です。しかし、この方法は理解しやすいものです。特にCSSについての手がかりがない場合は特にそうです。それに加えて、入力フィールドはとにかく形になる可能性が非常に高いです。
確認しませんでした、他にも同じような解決策があります、繰り返して申し訳ありません

0
Kun Wang
var rates = document.getElementById('rates').value;

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

rate_value = document.getElementById('r1').value;
0
James Cluade

iDで値を確認してください。

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

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