Trong jQuery, làm cách nào để lấy giá trị của một nút radio khi tất cả chúng đều có cùng tên?


108

Đây là mã của tôi:

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

Đây là JS:

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

Đây là JSFIDDLE ! Mỗi khi tôi nhấp vào nút, nó sẽ trả về 1. Tại sao? Ai giúp tôi với?

Câu trả lời:


226

Trong mã của bạn, jQuery chỉ tìm kiếm trường hợp đầu tiên của đầu vào có tên q12_3, trong trường hợp này có giá trị là 1. Bạn muốn một đầu vào có tên 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>

Lưu ý rằng đoạn mã trên không giống như cách sử dụng .is(":checked"). is()Hàm của jQuery trả về một phần tử boolean (true hoặc false) chứ không phải (an).


Vì câu trả lời này tiếp tục nhận được nhiều sự chú ý, tôi cũng sẽ bao gồm một đoạn mã JavaScript đơn giản.

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>


16

trong bộ chọn của mình, bạn cũng nên chỉ định rằng bạn muốn nút radio được chọn:

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

1
Tôi đang nhận được giá trị 'không xác định'
Pavan Alapati

@PavanAlapati Chúng tôi thực sự không thể cho bạn biết lý do tại sao mà không nhìn thấy HTML của bạn; lý tưởng là bạn sẽ đăng một câu hỏi mới với đoạn mã HTML chính xác của bạn và mã bạn đang sử dụng. Tuy nhiên, bạn sẽ chỉ nhận được không xác định, nếu: Tên trong bộ chọn không khớp với tên của các nút radio; không có nút radio nào được kiểm tra; hoặc nút radio đã chọn không được gán giá trị.
Dennis

7

Bạn có thể muốn thay đổi bộ chọn:

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


7

Cũng có một cách khác. Hãy thử mã bên dưới

$(document).ready(function(){

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



0

sử dụng tập lệnh này

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

4
isHàm của jQuery sẽ trả về a boolean, trong trường hợp này sẽ vô dụng.
Dennis
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.