2398

두 개의 라디오 버튼이있어서 선택한 하나의 값을 게시하고 싶습니다. jQuery로 어떻게 가치를 얻을 수 있습니까?

나는이 모든 것을 다음과 같이 얻을 수있다.

$("form :radio")

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

30 답변


3635

의 가치를 얻으려면선택된 radioNameID가있는 양식의 항목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>


  • 나는 이것을 사용하여 결국 $ (' 양식 입력 [type = 라디오] : 체크 됨 ') - juan
  • @PeterJ : 단순히 인수 대신 두 개의 인수를 사용하는 이유는 무엇입니까?'#myform input[name=radioName]:checked'? - Sophie Alpert
  • 범위가 올바르게 지정되면 jQuery가 가장 잘 수행되고 ID로 선택하면 항상 가장 실적이 높은 선택기입니다. 두 인자 방법은 단순히 다른 방법으로 사용합니다. - Peter J
  • 왜 : 라디오 : 체크? - Bakaburg
  • 최상의 성능을 얻으려면 문서에서 : 라디오 선택기를 사용하지 않는 것이 좋습니다.api.jquery.com/radio-selector - Peter J

381

이것을 사용하십시오 ..

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


  • 양식에 여러 개의 라디오 버튼 세트가있는 경우 첫 번째 세트의 값만 가져옵니다. - Brad
  • 폼에서 체크 된 첫 번째 라디오 버튼의 값만 반환합니다. 그것은 피터 J가 제안한 방식대로 행해져 야합니다. - MickJ
  • @MickJ이 코드 조각은 Peter J의 코드와 같습니다. 원래 질문의 사용 사례를 생각해보십시오. 그러나 라디오 버튼이 여러 개있는 경우에는 작동하지 않습니다. 그래서 [name = selector]를 사용하는 것이 더 나았습니다. - Lyth
  • @ 브래드 언급했듯이, 이것은 첫 번째 집합의 값을 얻을 것입니다. 원하는 것은 " .val () "을 < .map (function () {return this.value;}) .get (); " - am_
  • 가치가있는 부분에 대해 (필자는 필자가 필요로하는 것보다 먼저 최적화하는 것을 안다.) 순수한 성능을 위해 이것은 구형 브라우저에서 특히 더 빠르게 작동한다.$("#myform").find("input[type='radio']:checked").val(); - Mark Schultheiss

275

이미 라디오 버튼 그룹에 대한 참조가있는 경우 (예 :

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


  • 나는 단지 find ()가 실제로 검색하는 것을 명확하게하기 위해모든하위 요소 (주어진 선택자와 일치). 직접적인 아이들 만 원한다면 children ()을 사용하십시오. - Matt Browne

128

이 작동합니다.

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

""피 묻 J의 솔루션을 좋아해서 ""체크하지 않고 입력 주위에 쓰는 것을 주목하십시오.


76

radio selector와 함께 : checked 선택기를 사용할 수 있습니다.

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


  • 그러나 이것은 멋지게 보입니다.jQuery 문서더 나은 성능을 위해 : radio 대신 [type = radio]를 사용하도록 권장합니다. 가독성과 성능 사이의 균형입니다. 평상시와 같이 사소한 일에 대해서는 일반적으로 성능에 비해 가독성이 좋지만이 경우에는 [유형 = 라디오]가 실제로 더 명확하다고 생각합니다. 따라서이 경우에는 $ ( "form input [type = radio] : checked"). val ()처럼 보일 것입니다. 그래도 여전히 유효한 답변. - J.Money

49

부울 값만 원할 경우 (즉, 선택했는지 여부를 확인하려는 경우)

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


48

모든 라디오 받기 :

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

필터링 된 것을 얻으려면 필터링하십시오.

radios.filter(":checked")


43

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

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


  • ": 라디오" 일부는 여기에 필요하지 않습니다. - Matt Browne

29

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


23

여기에 양식을 쓰고 검사 된 라디오를받는 방법을 설명합니다.

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

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


21

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

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


  • 각 버튼의 상태는 무엇을 의미합니까? 같은 이름의 라디오 버튼은 하나만 검사 할 수 있으므로 체크 된 것이 있으면 나머지는 선택하지 않습니다. - Dementic

16

안에JSF생성 된 라디오 버튼 (using<h:selectOneRadio>태그)를 사용하면 다음 작업을 수행 할 수 있습니다.

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

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

반드시 사용하십시오이름대신에신분증, 표시된대로, jQuery는이 속성을 사용하기 때문에 (이름제어 ID와 유사한 JSF에 의해 자동으로 생성됩니다).


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

addin을 활성화하려면 코드를 아무 곳이나 두십시오. 그럼 즐기십시오! 아무것도 버리지 않고 기본 val 함수를 재정의합니다.

이 jsFiddle을 방문하여 실제 작동 방식을 시도하고 작동 방식을 확인할 수 있습니다.

깡깡이


14

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

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


14

단일 라디오 버튼이 여러 개있는 경우

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

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

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


11

 $(".Stat").click(function () {
     var rdbVal1 = $("input[name$=S]:checked").val();
 }


12

이 잘 작동합니다.

$('input[type="radio"][class="className"]:checked').val()

실무 데모

그만큼:checked선택기 작동checkboxes,radio buttons, 그리고 요소를 선택하십시오. 선택 요소에 대해서만:selected선택자.

API for:checked Selector


11

클래스를 사용하는 선택한 라디오의 가치를 얻으려면 :

$('.class:checked').val()


9

나는이 간단한 스크립트를 사용한다.

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


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

9

이것을 사용하십시오 :

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


7

데모: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

1 폼에 1 세트의 라디오 버튼 만있는 경우 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();


  • 라디오 버튼은 체크 박스와 다릅니다. 이 예제는 체크 박스를 사용합니다. - Matt Browne

3

시도 해봐-

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

console.log(radioVal);


2

그것을 얻는 또 다른 방법 :

 $("#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>


1

에서이 질문, 나는 현재 선택되었던 것에 접근하기 위해 다른 방법을 생각해 냈다.input당신이click이벤트를 표시합니다. 그 이유는 새롭게 선택된input업데이트 될 때까지 업데이트되지 않습니다.label님의 클릭 이벤트.

TL, DR

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

  ...
});

$(function() {
  // this outright does not work properly as explained above
  $('#reported label').click(function() {
    var query = $('input[name="filter"]:checked').val();
    var time = (new Date()).toString();

    $('.query[data-method="click event"]').html(query + ' at ' + time);
  });

  // this works, but fails to update when same label is clicked consecutively
  $('#reported input[name="filter"]').on('change', function() {
    var query = $('input[name="filter"]:checked').val();
    var time = (new Date()).toString();

    $('.query[data-method="change event"]').html(query + ' at ' + time);
  });

  // here is the solution I came up with
  $('#reported label').click(function() {
    var query = $('#' + $(this).attr('for')).val();
    var time = (new Date()).toString();

    $('.query[data-method="click event with this"]').html(query + ' at ' + time);
  });
});
input[name="filter"] {
  display: none;
}
#reported label {
  background-color: #ccc;
  padding: 5px;
  margin: 5px;
  border-radius: 5px;
  cursor: pointer;
}
.query {
  padding: 5px;
  margin: 5px;
}
.query:before {
  content: "on " attr(data-method)": ";
}
[data-method="click event"] {
  color: red;
}
[data-method="change event"] {
  color: #cc0;
}
[data-method="click event with this"] {
  color: green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="reported">
  <input type="radio" name="filter" id="question" value="questions" checked="checked">
  <label for="question">Questions</label>

  <input type="radio" name="filter" id="answer" value="answers">
  <label for="answer">Answers</label>

  <input type="radio" name="filter" id="comment" value="comments">
  <label for="comment">Comments</label>

  <input type="radio" name="filter" id="user" value="users">
  <label for="user">Users</label>

  <input type="radio" name="filter" id="company" value="companies">
  <label for="company">Companies</label>

  <div class="query" data-method="click event"></div>
  <div class="query" data-method="change event"></div>
  <div class="query" data-method="click event with this"></div>
</form>


1

$(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

내가해야 할 일은 C #코드를 단순화하는 것인데, 이것은 프론트 엔드 자바 스크립트에서 가능한 한 많은 일을하는 것입니다. DNN에서 작업 중이므로 필드 세트 컨테이너를 사용하고 있으며 자체 양식이 있습니다. 따라서 양식을 추가 할 수 없습니다.

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가있는 태그가 있으면 사용할 수 있습니다. DNNers에게는 이것이 좋은 점입니다. 여기서 최종 목표는 SQL Server에서 부품 검색을 시작하는 데 필요한 중간 수준 코드를 전달하는 것입니다.

이 방법을 사용하면 훨씬 복잡한 이전 C #코드도 복사 할 필요가 없습니다. 무거운 짐을 싣기가 바로 여기서 이루어지고 있습니다.

나는 이것을 위해 약간 보았고, 그것을 작동 시키려면 그걸로 땜질을해야만했다. 그래서 다른 DNNers에 대해서는 잘만하면 쉽게 찾을 수 있습니다.


0

당신은:checked선택자:

이 문서 확인 :

예 :

$('input[name=radioName]:checked', '#myForm').val()
$('#myForm input').on('change', function() {
	$('#val').text($('input[name=radioName]:checked', '#myForm').val());
});
#val {
  color: #EB0054;
  font-size: 1.5em;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<h3>Radio value: <span id='val'><span></h3>
<form id="myForm">
  <input type="radio" name="radioName" value="a"> a <br>
  <input type="radio" name="radioName" value="b"> b <br>
  <input type="radio" name="radioName" value="c"> c <br>
</form>

연결된 질문


관련된 질문

최근 질문