In jQuery, how do I get the value of a radio button when they all have the same name?

JavascriptJquery

Javascript Problem Overview


Here is my code:

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

Here is JS:

$(function(){
	$("#submit").click(function(){		
		alert($('input[name=q12_3]').val());
	});
 });

Here is JSFIDDLE! Every time I click button it returns 1. Why? Can anyone help me?

Javascript Solutions


Solution 1 - Javascript

In your code, jQuery just looks for the first instance of an input with name q12_3, which in this case has a value of 1. You want an input with name q12_3 that is :checked.

$("#submit").click(() => {
  const val = $('input[name=q12_3]:checked').val();
  alert(val);
});

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.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>

Note that the above code is not the same as using .is(":checked"). jQuery's is() function returns a boolean (true or false) and not (an) element(s).


Because this answer keeps getting a lot of attention, I'll also include a vanilla JavaScript snippet.

document.querySelector("#submit").addEventListener("click", () => {
  const val = document.querySelector("input[name=q12_3]:checked").value;
  alert(val);
});

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

Solution 2 - Javascript

in your selector, you should also specify that you want the checked radiobutton:

$(function(){
    $("#submit").click(function(){      
        alert($('input[name=q12_3]:checked').val());
    });
 });

Solution 3 - Javascript

You might want to change selector:

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

Solution 4 - Javascript

There is another way also. Try below code

$(document).ready(function(){

  	  $("input[name='gender']").on("click", function() {
  			alert($(this).val());
        });
});

Solution 5 - Javascript

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

Solution 6 - Javascript

DEMO : https://jsfiddle.net/ipsjolly/xygr065w/

$(function(){
    $("#submit").click(function(){      
        alert($('input:radio:checked').val());
    });
 });

Solution 7 - Javascript

use this script

$('input[name=q12_3]').is(":checked");

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
QuestionSPGView Question on Stackoverflow
Solution 1 - JavascriptBram VanroyView Answer on Stackoverflow
Solution 2 - JavascriptDennisView Answer on Stackoverflow
Solution 3 - JavascriptfantactukaView Answer on Stackoverflow
Solution 4 - JavascriptAnkush KhandekarView Answer on Stackoverflow
Solution 5 - JavascriptIyes boyView Answer on Stackoverflow
Solution 6 - JavascriptCode SpyView Answer on Stackoverflow
Solution 7 - JavascriptSohil DesaiView Answer on Stackoverflow