В jQuery, как мне получить значение переключателя, когда все они имеют одинаковое имя?

Вот мой код:

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

Вот JS:

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

Вот JSFIDDLE! Каждый раз, когда я нажимаю кнопку, он возвращает 1. Почему? Кто-нибудь может мне помочь?

Ответ 1

В вашем коде jQuery просто ищет первый экземпляр ввода с именем q12_3, которое в этом случае имеет значение 1. Вы хотите ввод с именем q12_3 который :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>

Ответ 2

в вашем селекторе, вы также должны указать, что вы хотите проверить радиообъект:

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

Ответ 3

Вы можете изменить селектор:

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

Ответ 4

Есть и другой способ. Попробуйте под кодом

$(document).ready(function(){

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

Ответ 5

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

Ответ 6

используйте этот script

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