jQuery에서 이름 속성으로 요소를 어떻게 선택합니까?


328

웹 페이지에 아래와 같이 3 개의 라디오 버튼이 있습니다.

<label for="theme-grey">
  <input type="radio" id="theme-grey" name="theme" value="grey" />Grey</label>
<label for="theme-pink">
  <input type="radio" id="theme-pink" name="theme" value="pink" />Pink</label>
<label for="theme-green">
  <input type="radio" id="theme-green" name="theme" value="green" />Green</label>

jQuery 에서이 세 가지 중 하나를 클릭하면 선택한 라디오 버튼의 값을 얻고 싶습니다. jQuery에는 id (#) 및 class (.) 선택기가 있지만 아래와 같이 이름으로 라디오 버튼을 찾으려면 어떻게해야합니까?

$("<radiobutton name attribute>").click(function(){});

이 문제를 해결하는 방법을 알려주십시오.


5
필드가 해당 'label'태그 사이에 포함되어 있다면 'for'속성을 엄격하게 지정할 필요는 없습니다.
Lucius

2
jQuery 1.8 이상이 이것을 변경합니다 .... 아래에 설명하는 답변을 추가했습니다.
Kevin LaBranche

3
A1rPun의 대답 은 최고입니다 : 비 jQuery one-liner!
Rudey

1
내 js 앱의 상태를 유지하기 위해 라디오 버튼을 사용했습니다. 이 스레드를 확인하기 전에 한 시간 동안 디버깅했습니다. 이것을 확인하십시오
Prasanth

일반 JS에서 :document.querySelectorAll("input:radio[name=theme]").forEach(function() { this.onclick=function() { var value = this.value; }; });
mplungjan

답변:


339

이렇게해야합니다.이 모든 것은 documentation 에 있으며, 이것과 매우 유사한 예가 있습니다.

$("input[type='radio'][name='theme']").click(function() {
    var value = $(this).val();
});

또한 해당 스 니펫에 여러 개의 동일한 ID가 있습니다. 유효하지 않은 HTML입니다. 고유해야하므로 클래스를 사용하여 ID가 ​​아닌 요소 세트를 그룹화하십시오.


4
@gargantaun-라디오 버튼을 클릭하면 어떻게 되나요?
Paolo Bergantino

11
좋은 지적. 여전히 "jQuery에서 이름을 사용하여 선택된 라디오 버튼 값을 얻는 방법"이 아닙니다. "jQuery를 사용하여 클릭 할 때 선택된 라디오 버튼 값을 얻는 방법은 무엇입니까?"입니다. 작은 차이가 있지만 조금 당황 스러웠습니다.
gargantuan

1
질문에 따르면이 대답은 정확합니다. 세계적인 관점에서 우리는 클레이튼의 대답으로갑니다.
Krish

8
jQuery 1.8 은 이런 방식 [type='radio']대신 사용하므로 :radiojQuery는 기본 DOM querySelectorAll()메소드가 제공하는 성능 향상을 활용할 수 있습니다 .
Adam

2
@PaoloBergantino 답변은 원하는 라디오 버튼을 클릭 한 후 값을 반환하기 때문에 100 % 정확합니다. @ Clayton Rabenda 답변은 이것을 제공하지 않습니다.
Azam Alvi

185

어떤 라디오 버튼이 점검되었는지 확인하려면 다음을 시도하십시오.

$('input:radio[name=theme]').click(function() {
  var val = $('input:radio[name=theme]:checked').val();
});

이벤트는 그룹의 모든 라디오 버튼에 대해 잡히고 선택한 버튼의 값은 val에 배치됩니다.

업데이트 : 게시 한 후 위의 Paolo의 답변이 DOM 순회를 덜 사용하므로 더 나은 것으로 결정했습니다. 이 답변은 브라우저 간 호환되는 방식으로 선택한 요소를 얻는 방법을 보여주기 때문에이 답변을 드리겠습니다.


3
Base는 내가 질문을 읽는 방법을 돈, 이것은 내가 필요한 대답이었습니다. : 체크에서 내가 잃어버린 것입니다. 감사.
HPWD

9
jQuery 1.8 은 이런 방식 [type='radio']대신 사용하므로 :radiojQuery는 기본 DOM querySelectorAll()메소드가 제공하는 성능 향상을 활용할 수 있습니다 .
Adam

나는 결장 뒤에 실수로 "확인"하기 전에 공백을 주었다. 따라서 공간이 없는지 확인하십시오.
흡연 원숭이

click 이벤트 핸들러에서 값을 가져 오지 않으려는 사람들에게 유용한 답변입니다. 그렇지 않으면 키워드가 클릭 한 버튼에 매핑되지 않는 :checked양식 제출 이벤트 핸들러와 같이 확인 된 버튼을 찾는 데 사용해야 this합니다.
che-azeh

155
$('input:radio[name=theme]:checked').val();

나는 간단하게 진행했다 $("input[name=theme]:checked").val();( :radio부분을 남겨두고 IE, FF, Safari 및 Chrome에서 잘 작동하는 것 같습니다. jQ v 1.3으로 작업해야했습니다 ... 물론 'theme'이라는 요소가 하나만 있음을 의미합니다
morespace54

2
이것은 최고의 답변 IMO입니다. "이 이름으로 CHECKED 라디오의 가치를 얻으십시오"라고 말합니다. 행사 등
불필요

39

또 다른 방법

$('input:radio[name=theme]').filter(":checked").val()

1
이 값은 +1 값을
가져 오려는

$themeRadios = $('input:radio[name=theme'])를 들어 이벤트 핸들러를 설정 한 다음 필터를 사용하여 값을 가져 오는 등 라디오 버튼을 유지하기 위해 변수를 사용할 수 있기 때문 $themeRadios.filter(":checked").val()입니다.
Joshua Pinter

나는이 솔루션을 좋아한다.
Abel

20

이것은 나를 위해 잘 작동합니다. 예를 들어, 동일한 "이름"을 가진 두 개의 라디오 버튼이 있으며, 체크 된 것의 값을 얻으려고합니다. 당신은 이것을 시도 할 수 있습니다.

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

이 답변이 현재 승인 된 230+ 상향식 답변보다 나은 이유는이 답변이 사용자가 키보드로 라디오 버튼과 상호 작용할 때를 설명하기 때문입니다.
gmeben

16

다음 코드는 선택된 라디오 버튼 값을 이름으로 가져 오는 데 사용됩니다

jQuery("input:radio[name=theme]:checked").val();

감사합니다 Adnan


흠 .. 마지막 회신에서 코드 형식을 수정하지 않았습니까? 스스로 처리하십시오 :-)
kleopatra

13

jQuery 1.7.2에서 1.8.2로 업그레이드 한 후 오류를 연구 하면서이 질문을 발견했습니다. jQuery 1.8 이상 에서이 질문에 대한 답변이 변경되어 답변이 추가되었습니다.

jQuery 1.8에서는 : radio, : checkbox, : text와 같은 의사 선택기 가 더 이상 사용되지 않습니다 .

지금 바로 교체 위의 작업을 수행하려면 :radio함께 [type=radio].

따라서 귀하의 답변은 이제 모든 버전의 jQuery 1.8 이상에 적용됩니다.

$("input[type=radio][name=theme]").click(function() { 
    var value = $(this).val(); 
}); 

1.8 readme변경 사항이 변경 사항에 대한 티켓을 읽을 수있을 뿐만 아니라 추가 정보 섹션 의 : radio 선택기 페이지 에서 이유를 이해할 수 있습니다.


5
: checked는 더 이상 사용되지 않습니다. 그래서 당신은 사용할 수 있습니다$("input[type='radio'][name='theme']:checked")
Adam

12

정말 간단한 일을하기 위해 라이브러리를 포함하고 싶지 않은 사람은 :

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

jsfiddle

현재 답변의 성능 개요는 여기를 확인하십시오.


1
이 답변에 감사드립니다. 어떤 형식 으로든 일할 수있는 답을 얻을 수 없었기 때문입니다.
Chris Holmes

9

클릭 이벤트 전에 선택된 기본 라디오 버튼의 값을 알고 싶다면 다음을 시도하십시오.

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

6

아래와 같이 페이지에 둘 이상의 라디오 그룹이있는 경우 필터 기능을 사용할 수 있습니다

$('input[type=radio]').change(function(){
    var value = $(this).filter(':checked' ).val();
    alert(value);
});

여기는 바이올린 URL입니다

http://jsfiddle.net/h6ye7/67/


4
<input type="radio" name="ans3" value="help"> 
<input type="radio" name="ans3" value="help1">
<input type="radio" name="ans3" value="help2">

<input type="radio" name="ans2" value="test"> 
<input type="radio" name="ans2" value="test1">
<input type="radio" name="ans2" value="test2">

<script type="text/javascript">
  var ans3 = jq("input[name='ans3']:checked").val()
  var ans2 = jq("input[name='ans2']:checked").val()
</script>

4

true / false 값을 원하면 다음을 사용하십시오.

  $("input:radio[name=theme]").is(":checked")

3

이 같은 것?

$("input:radio[name=theme]").click(function() { 
 ...
}); 

라디오 버튼을 클릭하면 결국 선택된 것으로 간주되므로 선택한 라디오 버튼이 호출됩니다.


1
@는 jQuery 1.3부터 ​​유효하지 않습니다 (이전에는 더 이상 사용되지 않습니다). blog.jquery.com/2009/01/05/help-test-jquery-13-beta-2 "오래된, XPath, 스타일 속성 선택기 : [@ attr = value]. 꽤 오랫동안 사용되지 않아서 '마침내 제거하고 있습니다. 문제를 해결하려면 @!
racerror

3

같은 페이지에 둘 이상의 라디오 버튼 그룹이 있으며 라디오 버튼의 값을 얻기 위해 이것을 시도 할 수도 있습니다.

$("input:radio[type=radio]").click(function() {
    var value = $(this).val();
    alert(value);
});

건배!


2

CSS 클래스를 사용하여 라디오 버튼의 범위를 정의한 후 다음을 사용하여 값을 결정할 수 있습니다.

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

1

이것은 나를 위해 일했다 ..

HTML :

<input type="radio" class="radioClass" name="radioName" value="1" />Test<br/>
<input type="radio" class="radioClass" name="radioName" value="2" />Practice<br/>
<input type="radio" class="radioClass" name="radioName" value="3" />Both<br/>

jquery :

    $ ( ". radioClass"). each (function () {
        if ($ (this) .is ( ': checked')))
        alert ($ (this) .val ());
    });

도움이 되길 바랍니다 ..



0

클래스 선택기를 사용하여 ASP.NET RadioButton컨트롤의 것이 항상 비어있는 이유를 알 수 있습니다.

아래와 같이 RadioButton컨트롤을 만듭니다 ASP.NET.

<asp:RadioButton runat="server" ID="rbSingle" GroupName="Type" CssClass="radios" Text="Single" />
<asp:RadioButton runat="server" ID="rbDouble" GroupName="Type" CssClass="radios" Text="Double" />
<asp:RadioButton runat="server" ID="rbTriple" GroupName="Type" CssClass="radios" Text="Triple" />

그리고 ASP.NET다음 HTML을 렌더링합니다.RadioButton

<span class="radios"><input id="Content_rbSingle" type="radio" name="ctl00$Content$Type" value="rbSingle" /><label for="Content_rbSingle">Single</label></span>
<span class="radios"><input id="Content_rbDouble" type="radio" name="ctl00$Content$Type" value="rbDouble" /><label for="Content_rbDouble">Double</label></span>
<span class="radios"><input id="Content_rbTriple" type="radio" name="ctl00$Content$Type" value="rbTriple" /><label for="Content_rbTriple">Triple</label></span>

들어 ASP.NET우리가 사용하고 싶지 않은 RadioButton그들은 사용자의 손에서 어떤 이유로 변경할 수 있기 때문에 컨트롤 이름이나 ID를 (컨테이너 이름, 양식 이름, UserControl을 이름 변경, ...) 당신은 위의 코드에서 볼 수있다.

RadioButtonusing jQuery 의 가치를 얻는 유일하게 가능한 방법 은 다음과 같이 전혀 관련이없는 질문에 대한 답변 에서 언급 한 CSS 클래스를 사용 하는 것입니다.

$('span.radios input:radio').click(function() {
    var value = $(this).val();
});
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.