선택한 라디오 버튼의 가치를 얻는 방법?


316

라디오 버튼 그룹에서 선택한 값을 가져 오려고합니다.

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

나는 계속 정의되지 않고있다.


50
여기서는 jQuery를 사용하지 않지만 원하는 경우 다음을 사용할 수 있습니다.$("input[type='radio'][name='rate']:checked").val();
GJK

왜 그 물체를 검사 할 수 없습니까? 어쨌든 당신은 사용해야합니다.checked
Amol M Kulkarni


그것이 필요한지 확실하지 않지만 <form></form>컨테이너 에 라디오 버튼을 넣는 것이 좋습니다 .
Kamil

답변:


239
var rates = document.getElementById('rates').value;

rates 요소는 div값이므로 값이 없습니다. 이것은 아마도 어디에서 undefined왔는지입니다.

checked속성은 요소의 선택 여부를 알려줍니다 :

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

229
jquery에서 그것은$("input[name=rate]:checked").val()
Kamran Ahmed

1
이해가 안됩니다. 동일한 ID를 가진 두 가지 요소가 있습니까?
mzalazar

3
@mzalazar 아니요, 모든 라디오 버튼에는 고유 한 ID가 있지만 모두 동일한 이름을 가지므로 하나의 그룹으로 분류하므로 다른 하나를 선택하면 다른 그룹이 선택 해제됩니다. Kamran Ahmed 응답을 사용하면 그룹의 어떤 라디오 버튼이 선택되었는지 확인하고 선택된 (확인 ​​된) 버튼의 값만 얻을 수 있습니다.
Broco

4
mahdavipanah의 코드 바로 위에 (가있는 [checked])는 속성 (즉, 초기 상태)을 찾습니다 . 대신 속성 (즉, 현재 상태) :checked을 찾고 거의 항상 원하는 것을 사용해야합니다.
Gras Double

5
자바 스크립트 그것은 것document.querySelectorAll("input[name=rate]:checked")[0].value
빈센트 맥넵

519

이것은 IE9 이상 및 다른 모든 브라우저에서 작동합니다.

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

13
물론 querySelector가 null을 반환하는지 확인해야합니다. 라디오 버튼이 선택되어 있지 않은 경우입니다.
Robert

18
@ KamranAhmed : jQuery 솔루션은 훨씬 큰 비용으로 제공됩니다.

5
ParthikGosar : IE8은 :checked선택기를 지원하지 않습니다 .

14
따옴표는 rate필요하지 않습니다.
mbomb007

1
@KamranAhmed까지 위의 프로파일을 작성하거나 호출 뒤에 구현을 검사 할 수있을 때까지 네이티브 코드를 호출하는 다른 oneliner에 대해 말할 수있는 것보다 위의 성능에 대해 더 이상 말할 수 없습니다. 브라우저가 :checked요소 를 찾는 방법을 추측하기에 충분한 정보가 없습니다. 아마도 "해시되고 캐시 된"모든 것이 있고 O(1)작업 일 것입니다. 쿼리 시간이 페이지의 요소 수에 따라 증가하는 것을 나타내도록 프로파일 링하지 않았거나 그 뒤에있는 브라우저 소스 코드를 이해하지 않으면 알 수 없습니다.
amn

144

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

13
하나의 라디오 만 검사 할 수 있다고 가정하면 일반적으로 블록 내부의 break또는 returnif이 루프를 통한 추가 통과를 중지 할 것으로 기대합니다 . 사소한 점이지만 좋은 스타일.
RobP

1
이것은이 질문에 가장 깨끗한 바닐라 구현입니다. 명성!
SeaWarrior404

37

가장자리에 사는 사람들 :

이제 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이 필요 합니다.


1
form.elements["test"].valueChrome [버전 49.0.2623.87 m]에서 매우 잘 작동합니다.
Evan Hu

그것은 형식이어야합니다, 예를 들어 div를 사용할 수 없습니다. 그렇지 않으면 이것은 FF 71.0에서 작동합니다.
앤드류

16

나를 위해 일한 것은 아래 api.jquery.com에서 제공됩니다.

HTML

<input type="radio" name="option" value="o1">option1</input>
<input type="radio" name="option" value="o2">option2</input>

자바 스크립트

var selectedOption = $("input:radio[name=option]:checked").val()

selectedOption 변수는 선택된 단일 선택 단추 (예 : o1 또는 o2)의 값을 포함합니다.


11

또 다른 (아마도 오래된) 옵션은 "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에는 양식 요소가 없습니다.

Fiddle here (Chrome 및 Firefox에서 작동) : https://jsfiddle.net/Josh_Shields/23kg3tf4/1/


1
이것은 훨씬 오래된 레거시 DOM 형식이며 특정 요소로 제한되고 현재 표준과 보조를 맞추지 않으므로 더 이상 사용해서는 안됩니다.
j08691

@ j08691 아, 알려 주셔서 감사합니다. 이것이 제가 대학 수업에서 배운 것 중 하나입니다. 거기에서 아무것도 신뢰하지 않고 온라인 참조를 대신 사용하는 것이 좋습니다.
JHS

6
"... 현재 표준에 보조를 맞추지 않았습니다." 설득력있는 주장이 아닙니다. 정교하게 작성하십시오. 작동하면 작동합니다. 또한 선택한 옵션이 '고정 비율'인지 여부를 결정하는 허용 된 답변보다 줄 수가 적습니다.
0과 1

위의 바이올린은 Safari 브라우저 (7.1.4)에서 작동하지 않는 것 같습니다. 값은 정의되지 않은 것으로 표시되며 라디오 버튼 상태를 변경해도 영향을 미치지 않습니다.
Stuart R. Jefferys

예, Edge 브라우저 (40.15063.0.0)에서도 작동하지 않습니다. 이 방법을 사용하지 않으면 라디오 버튼이 그 성격에 따라 그룹화되므로이 방법이 더 간단하고 의미가 있기 때문에 이상하게 보입니다. 다른 답변은 대부분 확인란을 선택하는 것처럼 보입니다.
mikato

10

사용 document.querySelector ( '입력 [TYPE = 라디오] 체크 ") 값,. 선택한 확인란의 값을 얻으려면 다른 속성을 사용하여 이름 = 성별 등의 값을 얻을 수 있습니다. 스 니펫 아래를 통해 분명히 도움이됩니다.

해결책

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

HTML 코드 :

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

쿼리 코드 :

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"

5

Javascript에서는 getElementById()위의 코드에서 ID " "를 사용하여 값을 얻을 수 있습니다. 게시 한 코드에는 ID가 아닌 이름이 있으므로 다음과 같이 수정하십시오.

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

코드에 따라이 rate_value를 사용하십시오.


5

질문을 한 지 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
    }  
} 

5

양식 요소가 myForm아래 변수 에 의해 참조되고 라디오 버튼이 "my-radio-button-group-name"이라는 이름을 공유 한다고 가정하면 다음은 순수한 JavaScript 및 표준을 준수합니다 (모든 곳에서 사용 가능한 것으로 확인하지는 않았지만) ) :

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

상기는 a의 값을 산출 할 것이다 체크 가있는 경우, 또는, (혹은 또한 불리는, 선택) 라디오 버튼 소자 null그렇지. 솔루션의 핵심은 namedItem라디오 버튼과 함께 작동 하는 기능입니다.

참조 HTMLFormElement.elements , HTMLFormControlsCollection.namedItem 특히 RadioNodeList.value을 로, namedItem 일반적으로 반환 RadioNodeList개체를.

MDN은 적어도 표준 준수를 추적 할 수 있고 많은 WhatWG 및 W3C 간행물보다 이해하기 쉽기 때문에 MDN을 사용합니다.


내가 답변을 썼을 때 나는 기존 답변을 훑어보고 공유하고 싶은 것과 비슷한 것을 보지 못했습니다. 이제 두 가지 이상의 유사한 솔루션을 놓친 것으로 보입니다. 그럼에도 불구하고 아무도 내가 사용하는 특정 구문을 사용하여 코드 제안을 작성하지는 않았지만 일반적인 아이디어는 동일합니다. 참고로 요점은에 대한 참조를 얻는 것입니다 RadioNodeList같은 것을 통해 form.elements[name]또는 form[name](아마도 추측) 또는 내 위의 구문을 통해.
amn

3

라디오 버튼을 여러 번 직접 호출하면 CHECKED 버튼이 아니라 FIRST 버튼의 값이 표시됩니다. 어떤 버튼이 선택되어 있는지 확인하기 위해 라디오 버튼을 반복하는 대신 onclick나중에 원하는대로 검색 할 수있는 변수를 설정 하는 자바 스크립트 함수 를 호출하는 것을 선호합니다 .

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

추가 이점은 데이터를 처리하거나 버튼 확인 (이 경우 제출 버튼 사용)에 반응 할 수 있다는 것입니다.


5
onchange사용자가 키보드를 사용하는 경우 대신 이벤트를 바인딩해야합니다 .
John Dvorak

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

2

순수한 자바 스크립트 로이 문제에 대한 나의 취지는 검사 된 노드를 찾고 그 값을 찾아 배열에서 튀어 나오는 것입니다.

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

화살표 기능을 사용하고 있습니다 . 실제 예제는 이 바이올린 을 참조하십시오 .


tagName === 'INPUT'이외의 태그에서 작업하고 있지 않은지 확인하기 위해 확인을 추가합니다 input.
Aternus


1

.find()확인 된 요소를 선택 하는 데 사용할 수 있습니다 .

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

var value = radio.length && radio.find(r => r.checked).value

1
Array.find를 몰랐습니다. 그러나 요소를 확인하지 않으면 중단됩니다.
pongi

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;

이것이 어떻게 질문에 대답하는지 설명 할 수 있습니까?
soundslikeodd

" 라디오 버튼 그룹에서 선택된 값을 얻습니다 ": rates.rate.valuenotrates.value
user7420100

정답입니다. document.getElementById("rates").rate.value[또는]document.forms[0].rate.value
Atika


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

도움이 되길 바랍니다.


0

단추가
var myform = new FormData(getformbywhatever); myform.get("rate");
위의 QuerySelector 양식 인 경우 더 나은 솔루션입니다. 그러나이 방법은 특히 CSS에 대한 힌트가없는 경우 이해하기 쉽습니다. 또한 입력 필드는 어쨌든 형태 일 가능성이 높습니다.
확인하지 못했습니다. 다른 유사한 솔루션이 있습니다. 반복에 대해 죄송합니다


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

대신 라디오 버튼의 값을 얻을 수 없습니다.

rate_value = document.getElementById('r1').value;

HTML 태그 사용 document.getElementById를 ( 'R1')의 값을 얻을 수 innerHTML을.
제임스 Cluade

0

를 사용하는 경우 JQuery라디오 버튼 그룹에 다음 코드를 사용하십시오.

var radioBtValue= $('input[type=radio][name=radiobt]:checked').val();

0

간단히 사용하십시오 : document.querySelector('input[rate][checked]').value


나를 위해 일하지 않았다; 위의 Pawan에서 유사한 구문을 참조하십시오. 로,document.querySelector('input[name = rate]:checked').value
팀 에릭슨

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>


0

요소에 forEach-loop를 사용하여 버튼을 반복 할 수도 있습니다.

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

-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);`

-2

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/>
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.