Câu hỏi Làm thế nào tôi có thể biết nút radio nào được chọn thông qua jQuery?


Tôi có hai nút radio và muốn đăng giá trị của nút đã chọn. Làm thế nào tôi có thể nhận được giá trị với jQuery?

Tôi có thể nhận được tất cả chúng như thế này:

$("form :radio")

Làm thế nào để tôi biết cái nào được chọn?


2293
2018-02-27 19:53


gốc




Các câu trả lời:


Để có được giá trị của đã chọn  radioName mục của biểu mẫu có id myForm:

$('input[name=radioName]:checked', '#myForm').val()

Đây là một ví dụ:

$('#myForm input').on('change', function() {
   alert($('input[name=radioName]:checked', '#myForm').val()); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="myForm">
  <input type="radio" name="radioName" value="1" /> 1 <br />
  <input type="radio" name="radioName" value="2" /> 2 <br />
  <input type="radio" name="radioName" value="3" /> 3 <br />
</form>


3535
2018-02-27 19:58



Tôi đã sử dụng điều này: $ ('form input [type = radio]: checked') - juan
@PeterJ: Tại sao bạn sử dụng hai đối số thay vì chỉ đơn giản là '#myform input[name=radioName]:checked'? - Sophie Alpert
jQuery thực hiện tốt nhất khi phạm vi chính xác và chọn theo ID luôn là bộ chọn có hiệu suất cao nhất. Phương pháp hai đối số đơn giản là một cách khác để thực hiện nó. - Peter J
Tại sao không: radio: đã kiểm tra? - Bakaburg
Để có hiệu suất tốt nhất, tài liệu đề xuất không sử dụng bộ chọn radio:. api.jquery.com/radio-selector - Peter J


Dùng cái này..

$("#myform input[type='radio']:checked").val();

370
2018-01-07 00:45



Nếu biểu mẫu của bạn có nhiều bộ nút radio, điều này sẽ chỉ nhận được giá trị của tập đầu tiên, tôi nghĩ vậy. - Brad
Điều này sẽ chỉ trả về giá trị của nút radio đầu tiên được kiểm tra trong biểu mẫu. Nó nên được thực hiện giống như cách Peter J gợi ý. - MickJ
@MickJ Đoạn mã này giống với đoạn từ Peter J ... Xem xét trường hợp sử dụng của câu hỏi gốc. Tuy nhiên, nếu bạn có nhiều nhóm nút radio khác nhau, nó sẽ không hoạt động. Đó là lý do tại sao nó hoàn toàn tốt hơn để sử dụng [name = selector] - Lyth
Như @Brad đã đề cập, điều này sẽ chỉ nhận được giá trị của tập đầu tiên. Những gì bạn muốn là thay thế ".val ()" bằng ".map (function () {return this.value;}). Get ();" - am_
Đối với những gì nó có giá trị, (yea tôi biết tối ưu hóa trước khi cần blah blah) nhưng đối với hiệu suất tinh khiết này hoạt động nhanh hơn đặc biệt là trong các trình duyệt cũ: $("#myform").find("input[type='radio']:checked").val(); - Mark Schultheiss


Nếu bạn đã có một tham chiếu đến một nhóm nút radio, ví dụ:

var myRadio = $("input[name=myRadio]");

Sử dụng filter() chức năng, không find(). (find() là để định vị các phần tử con / con cháu, trong khi filter() tìm kiếm các yếu tố cấp cao nhất trong lựa chọn của bạn.)

var checkedValue = myRadio.filter(":checked").val();

Ghi chú: Câu trả lời này ban đầu đã sửa một câu trả lời khác được đề xuất sử dụng find(), dường như từ đó đã bị thay đổi. find() vẫn có thể hữu ích cho trường hợp bạn đã có tham chiếu đến phần tử vùng chứa, nhưng không phải là các nút radio, ví dụ:

var form = $("#mainForm");
...
var checkedValue = form.find("input[name=myRadio]:checked").val();

256
2018-02-09 18:25



Tôi chỉ muốn thêm vào, vì lợi ích của sự rõ ràng, rằng tìm () thực sự tìm kiếm tất cả các các phần tử con cháu (phù hợp với bộ chọn đã cho). Nếu bạn chỉ muốn trẻ em trực tiếp, hãy sử dụng trẻ em (). - Matt Browne


Điều này sẽ hoạt động:

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

Lưu ý "" được sử dụng xung quanh đầu vào: được kiểm tra và không phải là giải pháp của Peter J


119
2018-03-30 22:29





Bạn có thể sử dụng công cụ chọn: được chọn cùng với bộ chọn radio.

 $("form:radio:checked").val();

69
2018-02-27 20:00



Điều này có vẻ tốt đẹp, tuy nhiên, Tài liệu jQuery khuyên bạn nên sử dụng [type = radio] thay vì: radio để có hiệu suất tốt hơn. Đó là một sự cân bằng giữa khả năng đọc và hiệu suất. Tôi thường mất khả năng đọc trên hiệu suất trên các vấn đề tầm thường như vậy, nhưng trong trường hợp này tôi nghĩ [type = radio] thực sự rõ ràng hơn. Vì vậy, trong trường hợp này nó sẽ trông giống như $ ("hình thức đầu vào [loại = radio]: kiểm tra"). Val (). Vẫn là một câu trả lời hợp lệ mặc dù. - J.Money


Nếu bạn chỉ muốn giá trị boolean, tức là nếu nó được chọn hoặc không thử:

$("#Myradio").is(":checked")

42
2017-08-30 20:27





Nhận tất cả radio:

var radios = jQuery("input[type='radio']");

Lọc để có được cái được kiểm tra

radios.filter(":checked")

42
2017-09-01 17:55





Một tùy chọn khác là:

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

35
2017-09-21 19:35



Phần ": radio" không cần thiết ở đây. - Matt Browne


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

25
2017-10-16 20:20





Đây là cách tôi sẽ viết biểu mẫu và xử lý việc nhận đài phát thanh đã chọn.

Sử dụng một biểu mẫu có tên myForm:

<form id='myForm'>
    <input type='radio' name='radio1' class='radio1' value='val1' />
    <input type='radio' name='radio1' class='radio1' value='val2' />
    ...
</form>

Lấy giá trị từ biểu mẫu:

$('#myForm .radio1:checked').val();

Nếu bạn không đăng biểu mẫu, tôi sẽ đơn giản hóa nó bằng cách sử dụng:

<input type='radio' class='radio1' value='val1' />
<input type='radio' class='radio1' value='val2' />

Sau đó nhận được giá trị đã chọn trở thành:

    $('.radio1:checked').val();

Có một tên lớp trên đầu vào cho phép tôi dễ dàng tạo kiểu đầu vào ...


20
2017-09-21 16:19