jQuery nhận giá trị của nút radio đã chọn


557

Báo cáo vấn đề rất đơn giản. Tôi cần xem người dùng đã chọn nút radio từ nhóm radio chưa. Mỗi nút radio trong nhóm chia sẻ cùng một id.

Vấn đề là tôi không kiểm soát được cách tạo biểu mẫu. Đây là mã mẫu về cách mã điều khiển nút radio trông như thế nào:

<input type="radio" name='s_2_1_6_0' value='Mail copy to my bill to address' id = "InvCopyRadio" onchange = 'SWESubmitForm(document.SWEForm2_0,s_4,"","1-DPWJJF")' style="height:20;width:25" tabindex=1997 >

Ngoài ra, khi chọn nút radio, nó không thêm thuộc tính "đã kiểm tra" vào điều khiển chỉ kiểm tra văn bản (tôi đoán chỉ thuộc tính được kiểm tra mà không có giá trị) . Dưới đây là cách điều khiển radio được chọn trông như thế nào

<input type="radio" checked name='s_2_1_6_0' value='Mail copy to my bill to address' id = "InvCopyRadio" onchange = 'SWESubmitForm(document.SWEForm2_0,s_4,"","1-DPWJJF")' style="height:20;width:25" tabindex=1997 >

Ai có thể giúp tôi với mã jQuery có thể giúp tôi lấy giá trị của nút radio đã kiểm tra không?


71
Bạn đã có nhiều yếu tố với cùng một ID? Đó là khủng khiếp.
Matt Ball


Làm thế nào mà làm việc với tất cả họ có cùng một ID? Khi đánh giá bằng ID không đánh giá dừng ở phần tử phù hợp đầu tiên? Mục đích ở đây là những yếu tố năng động được thể hiện ở những thời điểm khác nhau là gì?
Mark Carpenter Jr

1
FYI, người trợ giúp của ASP.NET MVC @ Html.RadioButtonFor sẽ tạo tất cả các nút radio có cùng id. Giáo sư.
Triynko

Câu trả lời:


1119

Chỉ dùng.

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

Thật dễ dàng


25
Đừng quên các dấu hiệu trích dẫn: $ ("input [name = '" + fieldName + "']: đã kiểm tra"). Val ();
Atara

4
@Guraprasad Rao: Đó là mã phù hợp - không cần trích dẫn trong trường hợp này. Hãy thử nó và xem.
Stefan

2
Tại sao điều này trả về "bật" thay vì giá trị tôi đã chỉ định trong HTML? EDIT: Bởi vì tôi không có trích dẫn xung quanh các giá trị của mình.
Vincent

3
$ ('input [name = "name_of_your_radiobutton"]: đã kiểm tra'). val ();
Sameera Prasad Jayasinghe

1
Lưu ý rằng nếu không có nút nào được chọn, điều này sẽ trả về null, điều này hợp lý nhưng đôi khi có thể làm bạn bối rối khi bạn quen xem ""là giá trị mặc định thông qua .val()cuộc gọi.
xji

313

Đầu tiên, bạn không thể có nhiều yếu tố với cùng một id. Tôi biết bạn nói rằng bạn không thể kiểm soát cách tạo biểu mẫu, nhưng ... hãy cố gắng bằng cách nào đó xóa tất cả id khỏi radio hoặc làm cho chúng trở nên độc đáo.

Để lấy giá trị của nút radio đã chọn, chọn nó theo tên với :checkedbộ lọc.

var selectedVal = "";
var selected = $("input[type='radio'][name='s_2_1_6_0']:checked");
if (selected.length > 0) {
    selectedVal = selected.val();
}

BIÊN TẬP

Vì vậy, bạn không có quyền kiểm soát tên. Trong trường hợp đó, tôi muốn đặt tất cả các nút radio bên trong một div, được đặt tên, giả sử radioDiv, sau đó sửa đổi một chút bộ chọn của bạn:

var selectedVal = "";
var selected = $("#radioDiv input[type='radio']:checked");
if (selected.length > 0) {
    selectedVal = selected.val();
}

75

Cách đơn giản nhất để có được giá trị của nút radio đã chọn như sau:

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

Không có không gian nên được sử dụng ở giữa bộ chọn.


Tùy chọn đơn giản nhất, đây là.
andreszs

44
$("#radioID") // select the radio by its id
    .change(function(){ // bind a function to the change event
        if( $(this).is(":checked") ){ // check if the radio is checked
            var val = $(this).val(); // retrieve the value
        }
    });

Hãy chắc chắn để bọc cái này trong hàm sẵn sàng DOM ( $(function(){...});hoặc $(document).ready(function(){...});).


Tôi luôn nhận được một giá trị trống với mã này .. Tôi đoán điều này là do thực tế là tôi không có tài sản với giá trị được kiểm tra chỉ là một văn bản được kiểm tra (tôi không chắc chúng ta có thể coi đó là một tài sản không)
user1114212

Bạn đang chọn nút radio bằng ID của nó? Bạn đã thay đổi radioIDID của nó?
Purag

37
  1. Trong mã của bạn, jQuery chỉ tìm phiên bản đầu tiên của một đầ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.
$(function(){
    $("#submit").click(function() {     
        alert($("input[name=q12_3]:checked").val());
    });
});
  1. Lưu ý rằng mã trên không giống như sử dụng .is(":checked"). is() Hàm của jQuery trả về một boolean (đúng hoặc sai) chứ không phải là một phần tử.

28
<input type="radio" class="radioBtnClass" name="numbers" value="1" />1<br/>
<input type="radio" class="radioBtnClass" name="numbers" value="2" />2<br/>
<input type="radio" class="radioBtnClass" name="numbers" value="3" />3<br/>

Điều này sẽ trở lại, kiểm tra giá trị nút radio.

if($("input[type='radio'].radioBtnClass").is(':checked')) {
    var card_type = $("input[type='radio'].radioBtnClass:checked").val();
    alert(card_type);
}

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

cho các thuộc tính lồng nhau

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

Đừng quên niềng răng duy nhất cho tên


20

Nhận tất cả các bộ đàm:

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

Bộ lọc để có được cái đã được kiểm tra

radios.filter(":checked");

HOẶC LÀ

Một cách khác bạn có thể tìm thấy giá trị nút radio

var RadeoButtonStatusCheck = $('form input[type=radio]:checked').val();

3
Tôi sử dụng $('[name=your_inputs_names]:checked').val()vì chúng luôn có cùng một tên duy nhất
vladkras

4
Sử dụng tốt.filter()
Mark Carpenter Jr

2
Đó .filter(). Tôi muốn câu trả lời này có thể ở đầu.
Yusril Maulidan Raji

16

Để nhận giá trị của Nút Radio đã chọn, hãy sử dụng RadioButtonName và Id mẫu có chứa RadioButton.

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

HOẶC chỉ

$('form input[type=radio]:checked').val();

12

Kiểm tra ví dụ nó hoạt động tốt

<div class="dtl_radio">
  Metal purity : 
    <label>
    <input type="radio" name="purityradio" class="gold_color" value="92" checked="">
    92 %
  </label>
    <label>
    <input type="radio" name="purityradio" class="gold_color" value="75">
    75 %
  </label>
    <label>
    <input type="radio" name="purityradio" class="gold_color" value="58.5">
    58.5 %
  </label>
    <label>
    <input type="radio" name="purityradio" class="gold_color" value="95">
    95 %
  </label>
    <label>
    <input type="radio" name="purityradio" class="gold_color" value="59">
    59 %
  </label>
    <label>
    <input type="radio" name="purityradio" class="gold_color" value="76">
    76 %
  </label>
    <label>
    <input type="radio" name="purityradio" class="gold_color" value="93">
    93 %
  </label>
   </div>

var check_value = $('.gold_color:checked').val();


12

Xem bên dưới để biết ví dụ làm việc với một tập hợp các nhóm radio, mỗi nhóm được liên kết với các phần khác nhau. Lược đồ đặt tên của bạn rất quan trọng, nhưng lý tưởng nhất là bạn nên thử và sử dụng lược đồ đặt tên nhất quán cho các đầu vào (đặc biệt là khi chúng nằm trong các phần như ở đây).

$('#submit').click(function(){
  var section = $('input:radio[name="sec_num"]:checked').val();
  var question = $('input:radio[name="qst_num"]:checked').val();
  
  var selectedVal = checkVal(section, question);
  $('#show_val_div').text(selectedVal);
  $('#show_val_div').show();
});

function checkVal(section, question) {
  var value = $('input:radio[name="sec'+section+'_r'+question+'"]:checked').val() || "Selection Not Made";
  return value;
}
* { margin: 0; }
div { margin-bottom: 20px; padding: 10px; }
h5, label { display: inline-block; }
.small { font-size: 12px; }
.hide { display: none; }
#formDiv { padding: 10px; border: 1px solid black; }
.center { display:block; margin: 0 auto; text-align:center; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="center">
  <div>
    <h4>Section 1</h4>

    <h5>First question text</h5>
    <label class="small"><input type="radio" name="sec1_r1" value="(1:1) YES"> YES</label>
    <label class="small"><input type="radio" name="sec1_r1" value="(1:1) NO"> NO</label>
    <br/>
    <h5>Second question text</h5>
    <label class="small"><input type="radio" name="sec1_r2" value="(1:2) YES"> YES</label>
    <label class="small"><input type="radio" name="sec1_r2" value="(1:2) NO"> NO</label>
    <br/>
    <h5>Third Question</h5>
    <label class="small"><input type="radio" name="sec1_r3" value="(1:3) YES"> YES</label>
    <label class="small"><input type="radio" name="sec1_r3" value="(1:3) NO"> NO</label>
  </div>

  <div>
    <h4>Section 2</h4>
    <h5>First question text</h5>
    <label class="small"><input type="radio" name="sec2_r1" value="(2:1) YES"> YES</label>
    <label class="small"><input type="radio" name="sec2_r1" value="(2:1) NO"> NO</label>
    <br/>
    <h5>Second question text</h5>
    <label class="small"><input type="radio" name="sec2_r2" value="(2:2) YES"> YES</label>
    <label class="small"><input type="radio" name="sec2_r2" value="(2:2) NO"> NO</label>
    <br/>
    <h5>Third Question</h5>
    <label class="small"><input type="radio" name="sec2_r3" value="(2:3) YES"> YES</label>
    <label class="small"><input type="radio" name="sec2_r3" value="(2:3) NO"> NO</label>
  </div>

  <div>
    <h4>Section 3</h4>
    <h5>First question text</h5>
    <label class="small"><input type="radio" name="sec3_r1" value="(3:1) YES"> YES</label>
    <label class="small"><input type="radio" name="sec3_r1" value="(3:1) NO"> NO</label>
    <br/>
    <h5>Second question text</h5>
    <label class="small"><input type="radio" name="sec3_r2" value="(3:2) YES"> YES</label>
    <label class="small"><input type="radio" name="sec3_r2" value="(3:2) NO"> NO</label>
    <br/>
    <h5>Third Question</h5>
    <label class="small"><input type="radio" name="sec3_r3" value="(3:3) YES"> YES</label>
    <label class="small"><input type="radio" name="sec3_r3" value="(3:3) NO"> NO</label>
  </div>
</div>


<div id="formDiv" class="center">
  <form target="#show_val_div" method="post">
    <p>Choose Section Number</p>
    <label class="small">
      <input type="radio" name="sec_num" value="1"> 1</label>
    <label class="small">
      <input type="radio" name="sec_num" value="2"> 2</label>
    <label class="small">
      <input type="radio" name="sec_num" value="3"> 3</label>
    <br/><br/>
    
    <p>Choose Question Number</p>
    <label class="small">
      <input type="radio" name="qst_num" value="1"> 1</label>
    <label class="small">
      <input type="radio" name="qst_num" value="2"> 2</label>
    <label class="small">
      <input type="radio" name="qst_num" value="3"> 3</label>
    <br/><br/>
    
    <input id="submit" type="submit" value="Show Value">
    
  </form>
  <br/>
  <p id="show_val_div"></p>
</div>
<br/><br/><br/>


12

Sử dụng mã dưới đây

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

Xin lưu ý, thuộc tính giá trị phải được xác định để có thể nhận được "Nam" hoặc "Nữ" trong kết quả của bạn.

<div id='div_container'>
<input type="radio" name="Gender" value="Male" /> Male <br />
<input type="radio" name="Gender" value="Female" /> Female
</div>

7

Hãy thử điều này với ví dụ

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1  /jquery.min.js"></script>
<form id="myForm">
<input type="radio" name="radio" value="first"/> 1 <br/>
<input type="radio" name="radio" value="second"/> 2 <br/>
</form>



<script>
$(document).ready(function () {
    $('#myForm').on('click', function () {
        var value = $("[name=radio]:checked").val();

        alert(value);
    })
});
</script>

7

Chỉ theo tên

$(function () {
    $('input[name="EventType"]:radio').change(function () {
        alert($("input[name='EventType']:checked").val());
    });
});

6
if (!$("#InvCopyRadio").prop("checked") && $("#InvCopyRadio").prop("checked"))
    // do something

1
Tại sao phải thực hiện so sánh chuỗi với undefinedkhi bạn biết chắc chắn giá trị phải là checked? Không có nhu cầu trong jQuery.
Devin Burke

Trong câu hỏi tôi không thấy bất kỳ thông tin nào cho thấy rằng một nút radio sẽ được kiểm tra từ đầu. Tôi có nghĩa là nó như thế trong hầu hết các trường hợp với các nút radio. Vì vậy, trong trường hợp khi chúng ta phải kiểm tra xem và không có cái nào được chọn, attr ("đã kiểm tra") sẽ trả về một đối tượng null.
Tadej Magajna

Đúng, nhưng tôi chỉ có nghĩa là trả về null sẽ không gây ra lỗi nên việc so sánh "undefined"là không cần thiết.
Devin Burke

5

Bạn có thể nhận giá trị của nút radio đã chọn bằng Id bằng cách sử dụng điều này trong javascript / jQuery.

$("#InvCopyRadio:checked").val();

Hy vọng điều này có thể giúp cho bạn.


rất hiệu quả !!
MHJ

4

Cách tốt nhất để giải thích chủ đề đơn giản này là bằng cách đưa ra ví dụ đơn giản và liên kết tham chiếu: -

Trong ví dụ sau chúng ta có hai nút radio. Nếu người dùng chọn bất kỳ nút radio nào, chúng tôi sẽ hiển thị giá trị nút radio đã chọn trong hộp cảnh báo.

Html:

<form id="Demo">
<input type="radio" name="Gender" value="Male" /> Male <br />
<input type="radio" name="Gender" value="Female" /> Female<br />
<input type="radio" name="Gender" value="others" /> others <br />
</form>

jquery: -

 $(document).ready(function(){
        $('#Demo input').on('change', function() {
            alert($('input[name="Gender"]:checked', '#Demo').val());
        });
    });

4

Tôi biết rằng tôi sẽ tham gia muộn. Nhưng điều đáng nói là phải mất

<label class="custom-control-label" for="myRadioBtnName">Personal Radio Button</label>

Và sau đó tôi đã kiểm tra điều này trong js của tôi. Nó có thể giống như

$(document).ready(function () { 

$("#MyRadioBtnOuterDiv").click(function(){
    var radioValue = $("input[name=myRadioButtonNameAttr]:checked").val();
    if(radioValue === "myRadioBtnName"){
        $('#showMyRadioArea').show();
    }else if(radioValue === "yourRadioBtnName"){
        $('#showYourRadioArea').show();
    }
});
});

`


3
<div id="subscriptions">
 Company Suscription: <input type="radio" name="subsrad" value="1">
 Customer Subscription:<input type="radio" name="subsrad" value="2">
 Manully Set:<input type="radio" name="subsrad" value="MANUAL">
 NO Subscription:<input type="radio" name="subsrad" value="0">
 </div>

và xử lý jquery để cảnh báo như đối với giá trị e được đặt / Thay đổi thông qua div id:

$("#subscriptions input") // select the radio by its id
    .on('change', function(){ // bind a function to the change event
    alert($('input[name="subsrad"]:checked', '#subscriptions').val());
            });

nó rất dễ dàng ....: -}


Một cách đơn giản hơn để làm điều này bằng cách sử dụng id cha sẽ là .... $ ("# đăng ký"). On ("thay đổi", function () {var select = $ (this) .find ("input: đã kiểm tra") .val (); cảnh báo (lựa chọn);});
MistyDawn

3

Một cách dễ hiểu khác ... Nó hoạt động:

Mã HTML:

 <input type="radio" name="active_status" class="active_status" value="Hold">Hold 
 <input type="radio" name="active_status" class="active_status" value="Cancel">Cancel 
 <input type="radio" name="active_status" class="active_status" value="Suspend">Suspend

Mã Jquery:

$(document).on("click", ".active_status", function () {
 var a = $('input[name=active_status]:checked').val();  
 (OR)   
 var a = $('.active_status:checked').val();
 alert(a);
});

3

nút radio nhiều nhóm chuyển đổi giá trị thành mảng

var arr = [];
    function r(n) {


        var section = $('input:radio[name="' + n + '"]:checked').val();
        arr[n] = section;

        console.log(arr)
    }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="radio" onchange="r('b1')" class="radioID" name="b1" value="1">1
<input type="radio" onchange="r('b1')"  class="radioID" name="b1" value="2"  >2
<input type="radio" onchange="r('b1')"   class="radioID" name="b1" value="3">3

<br>

<input type="radio" onchange="r('b2')" class="radioID2" name="b2" value="4">4
<input type="radio" onchange="r('b2')"  class="radioID2" name="b2" value="5"  >5
<input type="radio" onchange="r('b2')"   class="radioID2" name="b2" value="6">6


bạn có thể vui lòng thêm một số lời giải thích, để nhiều người có thể hiểu.
Chaieshwar Inde

2

Tôi không phải là một người javascript, nhưng tôi tìm thấy ở đây để tìm kiếm vấn đề này. Đối với những người google nó và tìm thấy ở đây, tôi hy vọng rằng điều này sẽ giúp một số. Vì vậy, như trong câu hỏi nếu chúng ta có một danh sách các nút radio:

<div class="list">
    <input type="radio" name="b1" value="1">
    <input type="radio" name="b2" value="2" checked="checked">
    <input type="radio" name="b3" value="3">
</div>

Tôi có thể tìm thấy cái nào được chọn với bộ chọn này:

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

Ngay cả khi không có phần tử nào được chọn, tôi vẫn không nhận được lỗi không xác định. Vì vậy, bạn không phải viết thêm nếu câu lệnh trước khi lấy giá trị của phần tử.

Dưới đây là ví dụ jsfiddle rất cơ bản .


1
Đây là cách sử dụng không chính xác thuộc tính name cho đầu vào radio. Các nút radio trong một nhóm phải có cùng tên nếu bạn chỉ muốn cho phép một giá trị duy nhất từ ​​nhóm. Làm theo cách này làm cho nó hoạt động giống như các hộp kiểm, cho phép nhiều lựa chọn thay vì một lựa chọn trong nhóm.
MistyDawn

@MistyDawn bạn nói đúng, tôi thậm chí không nhớ mình đã viết cái này như thế nào, có lẽ là do sửa một lỗi.
Yusuf Uzun

2

Dưới đây là 2 nút radio là rd1 và Radio1

<input type="radio" name="rd" id="rd1" />
<input type="radio" name="rd" id="Radio1" /> 

Cách đơn giản nhất để kiểm tra nút radio nào được kiểm tra, bằng cách kiểm tra từng cá nhân là thuộc tính (": đã kiểm tra")

if ($("#rd1").is(":checked")) {
      alert("rd1 checked");
   }
 else {
      alert("rd1 not checked");
   }

Đây không phải là một giải pháp rất mạnh mẽ. Tốt hơn là chỉ cần có một div chứa, và sau đó nhìn vào tất cả các bộ đàm bên dưới nó và chọn kiểm tra trên. Bạn cũng có thể nhìn vào tất cả các bộ đàm với một tên nhất định, và sau đó tìm cái được kiểm tra. Điều này giúp giảm việc phải thay đổi mã mỗi lần thêm nút.
Richard Duerr

Nếu trang của bạn có nhiều hơn 2 đầu vào radio, điều này có thể khiến RẤT khó hiểu và việc gán id cho mỗi đài sẽ rất tốn thời gian. Phương pháp này thường không được coi là thực hành tốt.
MistyDawn

2

Thậm chí inputlà không cần thiết như được đề xuất bởi các câu trả lời khác. Các mã sau đây cũng có thể được sử dụng:

var variable_name = $("[name='radio_name']:checked").val();

Điều này về cơ bản giống như câu trả lời này từ năm năm trước, chỉ cần không có inputvà có dấu ngoặc kép không cần thiết.
Khỉ Heretic

Những trích dẫn đó không cần thiết và lý do tôi đã đăng câu trả lời ở trên là để cho mọi người biết rằng đầu vào không cần thiết
shivamag00

Sau đó, bạn nên xem xét chỉnh sửa ing câu hỏi của bạn để đề cập đến những lý do đó thay vì sử dụng lệnh "Sử dụng mã sau". Bạn có thể muốn tham khảo một nguồn nói rằng các trích dẫn là cần thiết.
Khỉ Heretic

@HereticMonkey Đã hoàn thành chỉnh sửa ... Cảm ơn :)
shivamag00

1
    <input type="radio" name='s_2_1_6_0' value='Mail copy to my bill to address' id = "InvCopyRadio" onchange = 'SWESubmitForm(document.SWEForm2_0,s_4,"","1-DPWJJF")' style="height:20;width:25" tabindex=1997 >

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

1
HTML Code
<input id="is_verified" class="check" name="is_verified" type="radio" value="1"/>
<input id="is_verified" class="check" name="is_verified" type="radio" checked="checked" value="0"/>
<input id="submit" name="submit" type="submit" value="Save" />

Javascript Code
$("input[type='radio'].check").click(function() {
    if($(this).is(':checked')) {
        if ($(this).val() == 1) {
            $("#submit").val("Verified & Save");
        }else{
            $("#submit").val("Save");
        }
    }
});

1

Trong trường hợp bạn không biết tên riêng hoặc muốn kiểm tra tất cả các đầu vào radio trong một biểu mẫu, bạn có thể sử dụng var toàn cục để kiểm tra mỗi nhóm radio chỉ một lần giá trị: `

        var radio_name = "";
        $("form).find(":radio").each(function(){
            if (!radio_name || radio_name != $(this).attr('name')) {
                radio_name = $(this).attr('name');
                var val = $('input[name="'+radio_name+'"]:checked').val();
                if (!val) alert($('input[name="'+radio_name+'"]:checked').val());
            }
        });`
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.