jQuery를 통해 어떤 라디오 버튼이 선택되었는지 어떻게 알 수 있습니까?


2703

두 개의 라디오 버튼이 있으며 선택한 버튼의 값을 게시하고 싶습니다. jQuery로 가치를 얻으려면 어떻게해야합니까?

나는 이것들 모두를 얻을 수 있습니다 :

$("form :radio")

어느 것이 선택되었는지 어떻게 알 수 있습니까?

답변:


3933

의 값을 얻으려면 선택 radioName ID로 폼의 항목을 myForm:

$('input[name=radioName]:checked', '#myForm').val()

예를 들면 다음과 같습니다.

$('#myForm input').on('change', function() {
   alert($('input[name=radioName]:checked', '#myForm').val()); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="myForm">
  <input type="radio" name="radioName" value="1" /> 1 <br />
  <input type="radio" name="radioName" value="2" /> 2 <br />
  <input type="radio" name="radioName" value="3" /> 3 <br />
</form>


306
나는 이것을 사용하여 끝났다 : $ ( 'form input [type = radio] : checked')
juan

46
@ PeterJ : 왜 단순히 두 개의 인수를 사용하지 않았 '#myform input[name=radioName]:checked'습니까?
Sophie Alpert

145
jQuery는 범위가 올바르게 설정되어있을 때 가장 잘 수행되며 ID별로 선택하는 것이 항상 가장 성능이 뛰어난 선택기입니다. 2 인수 방법은 단순히 또 다른 방법입니다.
피터 J

40
최상의 성능을 위해서는 설명서에서 : radio 선택기를 사용하지 않는 것이 좋습니다. api.jquery.com/radio-selector
Peter J

2
다른 방법 : $ ( '. className : checked');
Meetai.com

410

이것을 사용하십시오 ..

$("#myform input[type='radio']:checked").val();

64
양식에 여러 라디오 버튼 세트가있는 경우 첫 번째 세트의 값 만 가져옵니다.
Brad

3
폼에서 확인 된 첫 번째 라디오 버튼의 값만 반환합니다. Peter J가 제안한대로 수행해야합니다.
MickJ

3
@MickJ이 코드는 Peter J의 코드와 동일합니다. 원래 질문의 사용 사례를 고려하십시오. 그러나 다양한 라디오 버튼 그룹이 있으면 작동하지 않습니다. 그렇기 때문에 [name = selector]를 사용하는 것이 좋습니다.
Lyth

1
@Brad가 언급했듯이 이것은 첫 번째 세트의 값 만 가져옵니다. 원하는 것은 ".val ()"을 ".map (function () {return this.value;}). get ();"으로 바꾸는 것입니다.
am_

1
그만한 가치가 있기 때문에 (예, 필요한 blah blah 전에 최적화하는 것을 알고 있습니다) 순수한 성능을 위해서는 특히 오래된 브라우저에서 더 빠르게 작동합니다.$("#myform").find("input[type='radio']:checked").val();
Mark Schultheiss

307

라디오 버튼 그룹에 대한 참조가 이미있는 경우 예를 들면 다음과 같습니다.

var myRadio = $("input[name=myRadio]");

filter()아닌 기능을 사용하십시오 find(). ( find()자식 / 하위 요소를 찾는 데 사용되는 반면 filter()선택 항목에서 최상위 요소를 검색합니다.)

var checkedValue = myRadio.filter(":checked").val();

참고 : 이 답변은 원래을 사용하도록 권장 된 다른 답변을 수정 find()한 것으로 변경되었습니다. find()컨테이너 요소에 대한 참조가 있지만 라디오 버튼에 대한 참조는 이미없는 상황에 여전히 유용 할 수 있습니다. 예 :

var form = $("#mainForm");
...
var checkedValue = form.find("input[name=myRadio]:checked").val();

7
find () 실제로 모든 하위 요소 (주어진 선택기와 일치하는 )를 검색한다는 것을 명확하게하기 위해 추가하고 싶었습니다 . 직계 자녀 만 원하면 children ()을 사용하십시오.
Matt Browne

139

이것은 작동해야합니다 :

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

Peter J의 솔루션처럼 ''가 아닌 입력 주위에 ""를 사용했습니다.


이것은 선택된 답변이어야합니다. 라디오 버튼을 추적하는 아주 좋은 방법입니다
quemeful

79

라디오 선택기와 함께 : checked 선택기를 사용할 수 있습니다.

 $("form:radio:checked").val();

13
그러나 이것은 jQuery 문서 에서 더 나은 성능을 위해 : radio 대신 [type = radio]를 사용하는 것이 좋습니다. 가독성과 성능 간의 절충점입니다. 일반적으로 이러한 사소한 문제에 대한 성능에 대한 가독성을 얻지 만이 경우 [type = radio]가 실제로 더 명확하다고 생각합니다. 따라서이 경우 $ ( "form input [type = radio] : checked"). val ()과 같습니다. 그래도 여전히 유효한 대답입니다.
None

57

부울 값만 원하는 경우, 예를 들어 확인하거나 시도하지 않은 경우 :

$("#Myradio").is(":checked")

53

모든 라디오를 받으십시오 :

var radios = jQuery("input[type='radio']");

확인한 것을 얻기위한 필터

radios.filter(":checked")

48

다른 옵션은 다음과 같습니다.

$('input[name=radioName]:checked').val()

6
여기서 ": radio"부분은 필요하지 않습니다.
Matt Browne


25

다음은 양식을 작성하고 확인 된 라디오 수신을 처리하는 방법입니다.

myForm이라는 양식을 사용하십시오.

<form id='myForm'>
    <input type='radio' name='radio1' class='radio1' value='val1' />
    <input type='radio' name='radio1' class='radio1' value='val2' />
    ...
</form>

양식에서 값을 얻으십시오.

$('#myForm .radio1:checked').val();

양식을 게시하지 않는 경우 다음을 사용하여 양식을 더 단순화합니다.

<input type='radio' class='radio1' value='val1' />
<input type='radio' class='radio1' value='val2' />

그런 다음 확인 된 값을 얻는 것은 다음과 같습니다.

    $('.radio1:checked').val();

입력에 클래스 이름이 있으면 입력의 스타일을 쉽게 지정할 수 있습니다.


24

필자의 경우 하나의 양식에 두 개의 라디오 버튼이 있으며 각 버튼의 상태를 알고 싶습니다. 아래는 나를 위해 일했습니다.

// get radio buttons value
console.log( "radio1: " +  $('input[id=radio1]:checked', '#toggle-form').val() );
console.log( "radio2: " +  $('input[id=radio2]:checked', '#toggle-form').val() );


    
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="toggle-form">
  <div id="radio">
    <input type="radio" id="radio1" name="radio" checked="checked" /><label for="radio1">Plot single</label>
    <input type="radio" id="radio2" name="radio"/><label for="radio2">Plot all</label>
  </div>
</form>


1
각 버튼의 상태는 무엇을 의미합니까? 같은 이름의 라디오 버튼을 사용하면 하나만 확인할 수 있으므로 확인한 경우 나머지는 확인되지 않습니다.
Dementic

17

A의 JSF 생성 라디오 버튼 (사용 <h:selectOneRadio>태그), 당신은이 작업을 수행 할 수 있습니다 :

radiobuttonvalue = jQuery("input[name='form_id\:radiobutton_id']:checked").val();

여기서 selectOneRadio ID는 radiobutton_id 이고 양식 ID는 form_id입니다. 입니다.

jQuery가이 속성을 사용하기 때문에 표시된대로 id 대신 name 을 사용해야 합니다 ( 이름 은 제어 ID와 유사한 JSF에 의해 자동으로 생성됨).


15

또한 사용자가 아무것도 선택하지 않았는지 확인하십시오.

var radioanswer = 'none';
if ($('input[name=myRadio]:checked').val() != null) {           
   radioanswer = $('input[name=myRadio]:checked').val();
}

15

라디오 버튼 값을 설정하고 얻는 jQuery 플러그인을 작성했습니다. 또한 "변경"이벤트도 존중합니다.

(function ($) {

    function changeRadioButton(element, value) {
        var name = $(element).attr("name");
        $("[type=radio][name=" + name + "]:checked").removeAttr("checked");
        $("[type=radio][name=" + name + "][value=" + value + "]").attr("checked", "checked");
        $("[type=radio][name=" + name + "]:checked").change();
    }

    function getRadioButton(element) {
        var name = $(element).attr("name");
        return $("[type=radio][name=" + name + "]:checked").attr("value");
    }

    var originalVal = $.fn.val;
    $.fn.val = function(value) {

        //is it a radio button? treat it differently.
        if($(this).is("[type=radio]")) {

            if (typeof value != 'undefined') {

                //setter
                changeRadioButton(this, value);
                return $(this);

            } else {

                //getter
                return getRadioButton(this);

            }

        } else {

            //it wasn't a radio button - let's call the default val function.
            if (typeof value != 'undefined') {
                return originalVal.call(this, value);
            } else {
                return originalVal.call(this);
            }

        }
    };
})(jQuery);

추가 기능을 사용하려면 코드를 아무 곳에 나 두십시오. 그럼 즐기세요! 아무 것도 깨지 않고 기본 val 함수를 무시합니다.

이 jsFiddle을 방문하여 실제로 사용해보고 작동 방식을 확인할 수 있습니다.

깡깡이


14

단일 형태의 다중 라디오 버튼이있는 경우

var myRadio1 = $('input[name=radioButtonName1]');
var value1 = myRadio1.filter(':checked').val();

var myRadio2 = $('input[name=radioButtonName2]');
var value2 = myRadio2.filter(':checked').val();

이것은 나를 위해 일하고 있습니다.





10

이 간단한 스크립트를 사용합니다

$('input[name="myRadio"]').on('change', function() {
  var radioValue = $('input[name="myRadio"]:checked').val();        
  alert(radioValue); 
});

모든 브라우저에서 작동하도록하려면 change 이벤트 대신 click 이벤트를 사용하십시오.
Matt Browne

10

이것을 사용하십시오 :

value = $('input[name=button-name]:checked').val();

8

데모 : https://jsfiddle.net/ipsjolly/xygr065w/

	$(function(){
	    $("#submit").click(function(){      
	        alert($('input:radio:checked').val());
	    });
	 });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
       <tr>
         <td>Sales Promotion</td>
         <td><input type="radio" name="q12_3" value="1">1</td>
         <td><input type="radio" name="q12_3" value="2">2</td>
         <td><input type="radio" name="q12_3" value="3">3</td>
         <td><input type="radio" name="q12_3" value="4">4</td>
         <td><input type="radio" name="q12_3" value="5">5</td>
      </tr>
    </table>
<button id="submit">submit</button>


6

하나의 폼에 하나의 라디오 버튼 세트 만있는 경우 jQuery 코드는 다음과 같이 간단합니다.

$( "input:checked" ).val()

5

이를 돕기 위해 라이브러리를 출시했습니다. 가능한 모든 입력 값을 가져 오지만 실제로 확인 된 라디오 버튼도 포함합니다. https://github.com/mazondo/formalizedata 에서 확인할 수 있습니다

그것은 당신에게 답변의 js 객체를 줄 것입니다.

<form>
<input type="radio" name"favorite-color" value="blue" checked> Blue
<input type="radio" name="favorite-color" value="red"> Red
</form>

당신에게 줄 것이다 :

$("form").formalizeData()
{
  "favorite-color" : "blue"
}

4

JavaScript 배열에서 모든 라디오 버튼 값을 검색하려면 다음 jQuery 코드를 사용하십시오.

var values = jQuery('input:checkbox:checked.group1').map(function () {
    return this.value;
}).get();

2
라디오 버튼은 확인란과 다릅니다. 이 예에서는 확인란을 사용합니다.
Matt Browne

4

시도 해봐-

var radioVal = $("#myform").find("input[type='radio']:checked").val();

console.log(radioVal);

4

JQuery는 양식의 모든 라디오 버튼과 선택된 값을 가져옵니다.

$.each($("input[type='radio']").filter(":checked"), function () {
  console.log("Name:" + this.name);
  console.log("Value:" + $(this).val());
});

3

그것을 얻는 또 다른 방법 :

 $("#myForm input[type=radio]").on("change",function(){
   if(this.checked) {
    alert(this.value);
    }
  });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="myForm">
   <span><input type="radio" name="q12_3" value="1">1</span><br>
   <span><input type="radio" name="q12_3" value="2">2</span>
</form>


2
$(function () {
// Someone has clicked one of the radio buttons
var myform= 'form.myform';
$(myform).click(function () {
    var radValue= "";
    $(this).find('input[type=radio]:checked').each(function () {
        radValue= $(this).val();
    });
  })
});

1

에서 이 질문에 , 나는이 현재 선택에 액세스 할 수있는 다른 방법으로 와서 input당신이 내 일 때 click각각의 라벨의 이벤트입니다. 이유는 새로 선택한 이벤트가 클릭 이벤트가 input완료 될 때까지 업데이트되지 않기 때문 label입니다.

TL; DR

$('label').click(function() {
  var selected = $('#' + $(this).attr('for')).val();

  ...
});


1

내가해야했던 일은 C # 코드를 단순화하는 것이 었습니다. 프론트 엔드 JavaScript에서 가능한 한 많은 작업을 수행했습니다. DNN에서 작업하고 자체 양식을 가지고 있기 때문에 fieldset 컨테이너를 사용하고 있습니다. 양식을 추가 할 수 없습니다.

3 중 어떤 텍스트 상자가 사용되고 있는지 테스트해야하며, 사용중인 경우 검색 유형은 무엇입니까? 값으로 시작하고 값을 포함합니다. 값의 정확한 일치.

HTML :

<fieldset id="fsPartNum" class="form-inline">
<div class="form-group">
    <label for="txtPartNumber">Part Number:</label>
    <input type="text" id="txtPartNumber" class="input-margin-pn" />
</div>
<div class="form-group">
    <label for="radPNStartsWith">Starts With: </label>
    <input type="radio" id="radPNStartsWith" name="partNumber" checked  value="StartsWith"/>
</div>
<div class="form-group">
    <label for="radPNContains">Contains: </label>
    <input type="radio" id="radPNContains" name="partNumber" value="Contains" />
</div>
<div class="form-group">
    <label for="radPNExactMatch">Exact Match: </label>
    <input type="radio" id="radPNExactMatch" name="partNumber" value="ExactMatch" />
</div>

그리고 내 JavaScript는 다음과 같습니다

        alert($('input[name=partNumber]:checked', '#fsPartNum').val()); 
    if(txtPartNumber.val() !== ''){
        message = 'Customer Part Number';
    }
    else if(txtCommercialPartNumber.val() !== ''){

    }
    else if(txtDescription.val() !== ''){

    }

ID가있는 포함 태그를 사용하면됩니다. DNN 사용자에게는이 점을 잘 알고 있습니다. 여기서 최종 목표는 SQL Server에서 부품 검색을 시작하는 데 필요한 중간 수준 코드로 전달하는 것입니다.

이렇게하면 훨씬 복잡한 이전 ​​C # 코드도 복사 할 필요가 없습니다. 여기서 무거운 짐을지고 있습니다.

나는 이것을 조금 보았고 그것을 작동시키기 위해 그것을 땜질했다. 따라서 다른 DNN 사용자에게는 이것이 쉽게 찾을 수 있기를 바랍니다.

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