jQuery seçilen radyo düğmesinin değerini al


557

Sorun bildirimi basittir. Kullanıcının bir radyo grubundan bir radyo düğmesi seçip seçmediğini görmem gerekiyor. Gruptaki her radyo düğmesi aynı kimliği paylaşır.

Sorun, formun nasıl oluşturulduğunu denetlemememdir. Bir radyo düğmesi kontrol kodunun nasıl göründüğüne ilişkin örnek kod:

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

Buna ek olarak, bir radyo düğmesi adil metin kontrolüne özelliğini "işaretli" eklemez seçildiğinde kontrol (sadece bu tesiste değeri olmayan kontrol tahmin) . Aşağıda seçilen bir radyo kontrolünün nasıl göründüğü

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

Kontrol edilen radyo düğmesinin değerini almama yardımcı olabilecek jQuery koduyla kimse bana yardımcı olabilir mi?


71
Aynı kimliğe sahip birden fazla öğeniz mi var? Bu korkunç.
Matt Ball


Hepsi aynı kimliğe sahip onlarla nasıl çalışır? Kimlikle değerlendirme yapılırken değerlendirme ilk eşleşen öğede durmuyor mu? Buradaki amaç nedir, farklı zamanlarda gösterilen dinamik öğelerdir?
Mark Carpenter Jr

1
FYI, ASP.NET MVC'nin @ Html.RadioButtonFor yardımcısı aynı kimliğe sahip tüm radyo düğmelerini oluşturur. ayy.
Triynko

Yanıtlar:


1119

Sadece kullan.

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

Çok kolay.


25
Alıntı işaretlerini unutmayın: $ ("input [name = '" + fieldName + "']: işaretli"). Val ();
Atara

4
@Guraprasad Rao: Doğru kod - bu durumda tırnak işaretleri gerekmez. Deneyin ve görün.
Stefan

2
Bu neden HTML'de belirttiğim değer yerine "açık" veriyor? EDIT: Çünkü değerlerim hakkında tırnak yoktu.
Vincent

3
$. ( 'girişi [ad = "name_of_your_radiobutton"]: kontrol') val ();
Sameera Prasad Jayasinghe

1
Hiçbir düğme seçilmezse bunun geri döneceğini unutmayın null, bu mantıklıdır, ancak çağrı ""yoluyla varsayılan değer olarak görmeye alıştığınızda bazen sizi şaşırtabilir .val().
xji

313

İlk olarak, aynı kimliğe sahip birden fazla öğeniz olamaz. Formun nasıl oluşturulacağını kontrol edemeyeceğinizi söylediğinizi biliyorum, ama ... bir şekilde tüm kimlikleri radyolardan kaldırmaya çalışın ya da benzersiz kılın.

Seçilen radyo düğmesinin değerini almak için :checkedfiltreden adıyla seçin .

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

DÜZENLE

Yani isimler üzerinde kontrolünüz yok. Bu durumda, bu radyo düğmelerini, adında, örneğin adında bir div içine koyun radioDiv, sonra seçicinizi biraz değiştirin:

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

75

Seçilen radyo düğmesinin değerini almanın en basit yolu aşağıdaki gibidir:

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

Seçici arasında boşluk olmamalıdır.


En basit seçenek, bu.
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
        }
    });

Bunu DOM için hazır işlevinde ( $(function(){...});veya $(document).ready(function(){...});) sarmayı unutmayın .


Ben her zaman bu kod ile boş bir değer alıyorum .. Sanırım bu gerçeği ben sadece bir metin kontrol özellikli kontrol özelliği (Ben bir özellik olarak düşünebilirsiniz eğer emin değilim) nedeniyle
user1114212

Radyo düğmesini kimliğiyle mi seçiyorsunuz? Değiştirmek mi radioIDonun kimliğine?
Purag

37
  1. Kodunuzda, jQuery sadece bu durumda 1 değerine sahip olan q12_3 adında bir girdinin ilk örneğini arar :checked.
$(function(){
    $("#submit").click(function() {     
        alert($("input[name=q12_3]:checked").val());
    });
});
  1. Yukarıdaki kodun kullanımla aynı olmadığını unutmayın .is(":checked"). jQuery is() işlevi bir öğe değil bir boole (doğru veya yanlış) döndürür.

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

Bu geri döner, işaretli radyo düğmesi değeri.

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

yuvalanmış özellikler için

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

İsim için tekli parantezleri unutmayın


20

Tüm radyoları alın:

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

İşaretli olanı almak için filtreleyin

radios.filter(":checked");

VEYA

Radyo düğmesi değerini bulmanın başka bir yolu

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

3
Ben $('[name=your_inputs_names]:checked').val()her zaman aynı benzersiz isme sahip oldukları için kullanıyorum
vladkras

4
İyi kullanım.filter()
Mark Carpenter Jr

2
İşte .filter(). Keşke bu cevap en tepede olabilir.
Yusril Maulidan Raji

16

Seçilen Radyo Düğmesinin değerini almak için RadioButtonName ve RadioButton'u içeren Form Kimliği'ni kullanın.

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

VEYA sadece

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

12

İyi çalıştığı örneği kontrol edin

<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

Her biri farklı bölümlerle ilişkili radyo gruplarının bir koleksiyonuyla çalışma örneği için aşağıya bakın. Adlandırma düzeniniz önemlidir, ancak ideal olarak girdiler için tutarlı bir adlandırma düzeni kullanmayı denemelisiniz (özellikle de buradaki bölümlerde bulunduklarında).

$('#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

Aşağıdaki Kodu Kullan

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

Sonuçta "Erkek" veya "Kadın" alabilmek için değer özelliğinin tanımlanması gerektiğini lütfen unutmayın.

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

7

Bunu örnekle deneyin

<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

Yalnızca İsme Göre

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

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

1
Neden undefineddeğer olması gerektiğini kesin olarak bildiğiniz zaman dize karşılaştırması yapmak zahmet checked? JQuery'ye gerek yok.
Devin Burke

Soruda, bir radyo düğmesinin en baştan kontrol edileceğini gösteren hiçbir bilgi görmüyorum. Yani çoğu durumda radyo düğmeleriyle böyle. Bu nedenle, hiçbirinin seçilmediğini kontrol etmemiz gerektiğinde, attr ("işaretli") boş bir nesne döndürür.
Tadej Magajna

Doğru, ama sadece null döndürmek bir hataya neden olmaz yani karşılaştırma "undefined"gereksiz demekti .
Devin Burke

5

Javascript / jQuery'de bunu kullanarak Id ile seçilen radyo düğmesinin değerini alabilirsiniz.

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

Umarım bu yardımcı olacak.


çok verimli !!
MHJ

4

Bu basit konuyu açıklamanın en iyi yolu basit örnek ve referans bağlantısı vermektir:

Aşağıdaki örnekte iki radyo düğmemiz var. Kullanıcı herhangi bir radyo düğmesini seçerse, seçilen radyo düğmesi değerini bir uyarı kutusunda görüntüleriz.

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

Bu kadar geç katıldığımı biliyorum. Ama bahsetmeye değer

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

Ve sonra bunu js'imde kontrol ettim. Gibi olabilir

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

ve div id ile değiştirilen / değiştirilen değer için uyarı için jquery işlemek:

$("#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());
            });

bu çok kolay....:-}


Üst kimliği kullanarak bunu yapmanın daha basit bir yolu .... $ ("# abonelikler"). .val (); uyarı (seçim);});
MistyDawn

3

Anlamanın kolay bir yolu ... Çalışıyor:

HTML Kodu:

 <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

Jquery Kodu:

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

3

çok gruplu radyo düğmesi diziye gizli değer

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


biraz açıklama ekleyebilir misin, böylece daha fazla insan anlayabilir.
Shanteshwar Inde

2

Ben bir javascript kişi değilim, ama burada bu sorunu aramak için bulundu. Kim google ve burada bulmak için, ben bu bazı yardımcı olur umuyorum. Yani, söz konusu olduğu gibi bir radyo düğmesi listemiz varsa:

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

Bu seçiciyle hangisinin seçildiğini bulabilirim:

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

Hiçbir öğe seçili olmasa bile, hala tanımsız hata almıyorum. Bu nedenle, elementin değerini almadan önce if ifadesi yazmanıza gerek yoktur.

İşte çok temel jsfiddle örneği .


1
Bu, radyo girişleri için name özelliğinin yanlış kullanımıdır. Gruptaki tek bir değere izin vermek istiyorsanız, bir gruptaki radyo düğmelerinin adı aynı olmalıdır. Bu şekilde yapılması, onay kutuları gibi çalışmasını sağlar ve grup içinde tek bir seçim yerine birden çok seçime izin verir.
MistyDawn

@MistyDawn haklısın, bunu nasıl yazdığımı bile hatırlamıyorum, muhtemelen bir hatayı düzeltmekten.
Yusuf Uzun

2

İşte rd1 ve Radio1 olmak üzere 2 radyo düğmesi

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

Tek tek kontrol edilerek hangi radyo düğmesinin işaretlendiğini kontrol etmenin en basit yolu (": işaretli") özelliktir

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

Bu çok sağlam bir çözüm değil. İçeren bir div olması ve altındaki tüm radyolara bakıp işaretli seçilmesi daha iyidir. Ayrıca belirli bir ada sahip tüm radyolara bakabilir ve ardından işaretli olanı bulabilirsiniz. Bu, her düğme eklendiğinde kodun değiştirilmesi gerekliliğini azaltır.
Richard Duerr

Sayfanızda 2'den fazla radyo girişi varsa, bu çok kafa karıştırıcı olabilir ve her radyoya bir kimlik atamak çok zaman alıcı olacaktır. Bu yöntem tipik olarak iyi uygulama olarak değerlendirilmez.
MistyDawn

2

inputDiğer cevapların önerdiği gibi bile gerekli değildir. Aşağıdaki kod da kullanılabilir:

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

Bu, esasen beş yıl önceki bu cevapla aynıdır , sadece inputgereksiz alıntı işaretleri olmadan ve olmadan .
Heretic Monkey

Bu alıntılar gereksiz değildir ve yukarıdaki cevabı yayınlamamın nedeni, insanların girişin gerekli olmadığını bilmelerini sağlamaktır
shivamag00

Ardından , "Aşağıdaki kodu kullan" komutunu kullanmak yerine, bu nedenlerden bahsetmek için sorunuzu düzenlemeyi düşünmelisiniz . Alıntıların gerekli olduğunu belirten bir kaynağa başvurmak isteyebilirsiniz.
Heretic Monkey

@HereticMonkey Düzenleme tamamlandı ... Teşekkürler :)
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

Özel adı bilmiyorsanız veya bir formdaki tüm radyo girişlerini kontrol etmek istiyorsanız, her radyo grubunun değerini yalnızca bir kez kontrol etmek için global bir var kullanabilirsiniz: ``

        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());
            }
        });`
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.