In jQuery, how do I select an element by its name attribute?

JavascriptJqueryHtmlRadio Button

Javascript Problem Overview


I have 3 radio buttons in my web page, like below:

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

In jQuery, I want to get the value of the selected radio button when any of these three are clicked. In jQuery we have id (#) and class (.) selectors, but what if I want to find a radio button by its name, as below?

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

Please tell me how to solve this problem.

Javascript Solutions


Solution 1 - Javascript

This should do it, all of this is in the documentation, which has a very similar example to this:

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

I should also note you have multiple identical IDs in that snippet. This is invalid HTML. Use classes to group set of elements, not IDs, as they should be unique.

Solution 2 - Javascript

To determine which radio button is checked, try this:

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

The event will be caught for all of the radio buttons in the group and the value of the selected button will be placed in val.

Update: After posting I decided that Paolo's answer above is better, since it uses one less DOM traversal. I am letting this answer stand since it shows how to get the selected element in a way that is cross-browser compatible.

Solution 3 - Javascript

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

Solution 4 - Javascript

another way

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

Solution 5 - Javascript

This works great for me. For example you have two radio buttons with the same "name", and you just wanted to get the value of the checked one. You may try this one.

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

Solution 6 - Javascript

The following code is used to get the selected radio button value by name

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

Thanks Adnan

Solution 7 - Javascript

For anyone who doesn't want to include a library to do something really simple:

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

jsfiddle

For a performance overview of the current answers check here

Solution 8 - Javascript

I found this question as I was researching an error after I upgraded from 1.7.2 of jQuery to 1.8.2. I'm adding my answer because there has been a change in jQuery 1.8 and higher that changes how this question is answered now.

With jQuery 1.8 they have deprecated the pseudo-selectors like :radio, :checkbox, :text.

To do the above now just replace the :radio with [type=radio].

So your answer now becomes for all versions of jQuery 1.8 and above:

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

You can read about the change on the 1.8 readme and the ticket specific for this change as well as a understand why on the :radio selector page under the Additional Information section.

Solution 9 - Javascript

If you'd like to know the value of the default selected radio button before a click event, try this:

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

Solution 10 - Javascript

You can use filter function if you have more than one radio group on the page, as below

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

Here is fiddle url

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

Solution 11 - Javascript

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

Solution 12 - Javascript

If you want a true/false value, use this:

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

Solution 13 - Javascript

Something like this maybe?

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

When you click on any radio button, I believe it will end up selected, so this is going to be called for the selected radio button.

Solution 14 - Javascript

I you have more than one group of radio buttons on the same page you can also try this to get the value of radio button:

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

Cheers!

Solution 15 - Javascript

can also use a CSS class to define the range of radio buttons and then use the following to determine the value

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

Solution 16 - Javascript

This worked for me..

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

Hope it helps..

Solution 17 - Javascript

$('input:radio[name=theme]').bind(
  'click',
  function(){
    $(this).val();
});

Solution 18 - Javascript

You might notice using class selector to get value of ASP.NET RadioButton controls is always empty and here is the reason.

You create RadioButton control in ASP.NET as below:

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

And ASP.NET renders following HTML for your 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>

For ASP.NET we don't want to use RadioButton control name or id because they can change for any reason out of user's hand (change in container name, form name, usercontrol name, ...) as you can see in code above.

The only remaining feasible way to get the value of the RadioButton using jQuery is using css class as mentioned in this answer to a totally unrelated question as following

$('span.radios input:radio').click(function() {
    var value = $(this).val();
});

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestiondjmzfKnmView Question on Stackoverflow
Solution 1 - JavascriptPaolo BergantinoView Answer on Stackoverflow
Solution 2 - Javascriptjeff.mitchelView Answer on Stackoverflow
Solution 3 - JavascriptJayView Answer on Stackoverflow
Solution 4 - Javascripth0mayunView Answer on Stackoverflow
Solution 5 - JavascriptwdonayredroidView Answer on Stackoverflow
Solution 6 - JavascriptMuhammad AdnanView Answer on Stackoverflow
Solution 7 - JavascriptA1rPunView Answer on Stackoverflow
Solution 8 - JavascriptKevin LaBrancheView Answer on Stackoverflow
Solution 9 - JavascriptlhoessView Answer on Stackoverflow
Solution 10 - JavascriptMuhammad SalmanView Answer on Stackoverflow
Solution 11 - JavascriptkartheekView Answer on Stackoverflow
Solution 12 - Javascriptgls123View Answer on Stackoverflow
Solution 13 - JavascripttschaibleView Answer on Stackoverflow
Solution 14 - JavascriptahmedView Answer on Stackoverflow
Solution 15 - JavascriptDaniel FernandesView Answer on Stackoverflow
Solution 16 - JavascriptRavi MView Answer on Stackoverflow
Solution 17 - JavascriptAnkurView Answer on Stackoverflow
Solution 18 - JavascriptAaAView Answer on Stackoverflow