Di jQuery, bagaimana cara mendapatkan nilai tombol radio jika semuanya memiliki nama yang sama?

108

Ini kode saya:

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

Inilah JS:

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

Inilah JSFIDDLE ! Setiap kali saya mengklik tombol itu kembali 1. Mengapa? Ada yang bisa bantu saya?

SPG
sumber

Jawaban:

226

Dalam kode Anda, jQuery hanya mencari contoh pertama input dengan nama q12_3, yang dalam hal ini memiliki nilai 1. Anda ingin masukan dengan nama q12_3itu :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>

Perhatikan bahwa kode di atas tidak sama dengan menggunakan .is(":checked"). is()Fungsi jQuery mengembalikan elemen boolean (true atau false) dan bukan (an).


Karena jawaban ini terus mendapatkan banyak perhatian, saya juga akan menyertakan potongan JavaScript vanilla.

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>

Bram Vanroy
sumber
16

di pemilih Anda, Anda juga harus menentukan bahwa Anda ingin radiobutton dicentang:

$(function(){
    $("#submit").click(function(){      
        alert($('input[name=q12_3]:checked').val());
    });
 });
Dennis
sumber
1
Saya mendapatkan nilai yang 'tidak ditentukan'
Pavan Alapati
@PavanAlapati Kami tidak dapat memberi tahu Anda alasannya tanpa melihat HTML Anda juga; idealnya, Anda akan memposting pertanyaan baru dengan cuplikan HTML yang tepat dan kode yang Anda gunakan. Anda seharusnya hanya mendapatkan undefined, jika: Nama pada selector tidak cocok dengan nama radiobuttons; tidak ada tombol radio yang dicentang; atau tombol radio yang dicentang tidak memiliki nilai yang ditetapkan.
Dennis
7

Anda mungkin ingin mengubah pemilih:

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

fantactuka
sumber
7

Ada cara lain juga. Coba kode di bawah ini

$(document).ready(function(){

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

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

Iyes boy
sumber
0

gunakan skrip ini

$('input[name=q12_3]').is(":checked");
Sohil Desai
sumber
4
isFungsi jQuery akan mengembalikan a boolean, yang dalam hal ini tidak akan berguna.
Dennis