JQuery aracılığıyla hangi radyo düğmesinin seçildiğini nasıl bilebilirim?


2704

İki radyo düğmem var ve seçilenin değerini göndermek istiyorum. JQuery ile değeri nasıl alabilirim?

Hepsini bu şekilde alabilirim:

$("form :radio")

Hangisinin seçildiğini nasıl bilebilirim?

Yanıtlar:


3933

Kimliğine sahip bir formun seçilen radioName öğesinin değerini almak için myForm:

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

İşte bir örnek:

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


306
Bunu kullanarak sona erdi: $ ('form input [type = radio]: işaretli')
juan

46
@PeterJ: Neden sadece iki argüman kullandınız '#myform input[name=radioName]:checked'?
Sophie Alpert

145
jQuery en iyi performansı, doğru bir şekilde kapsamlandırıldığında gerçekleştirilir ve kimliğe göre seçim her zaman en yüksek performanslı seçicidir. İki argüman yöntemi, bunu yapmanın başka bir yoludur.
Peter J

40
En iyi performans için, belgeler radyo seçicinin kullanılmamasını önerir. api.jquery.com/radio-selector
Peter J

2
Alternatif: $ ('. ClassName: işaretli');
Meetai.com

410

Bunu kullan..

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

64
Formunuzda birden fazla radyo düğmesi seti varsa, bu sadece ilk setin değerini alacaktır.
Brad

3
Bu, yalnızca formda işaretlenen ilk radyo düğmesinin değerini döndürür. Peter J'nin önerdiği gibi yapılmalıdır.
Ocak'ta MickJ

3
@MickJ Bu kod parçası Peter J. ile aynıdır ... Orijinal sorunun kullanım durumu düşünüldüğünde. Ancak, çeşitli radyo düğmesi gruplarınız varsa, çalışmaz. Bu yüzden [name = selector] kullanmak prolly daha iyidir
Lyth

1
@Brad'ın belirttiği gibi, bu sadece ilk setin değerini alacaktır. ".Val ()" yerine ".map (function () {return this.value;}). Get ();"
am_

1
Ne için değer, (evet ben daha önce gerekli blah blah optimizasyon biliyorum) ama saf performans için bu özellikle eski tarayıcılarda daha hızlı çalışır:$("#myform").find("input[type='radio']:checked").val();
Mark Schultheiss

307

Bir radyo düğmesi grubuna zaten bir referansınız varsa, örneğin:

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

filter()İşlevi kullanın , değil find(). ( find()alt öğe / alt öğe öğelerini bulmak içindir, oysa filter()seçiminizdeki üst düzey öğeleri arar.)

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

Notlar: Bu yanıt başlangıçta kullanılması önerilen find(), değiştirilmiş görünen başka bir yanıtı düzeltiyordu . find()zaten bir kapsayıcı öğeye zaten başvurduğunuz, ancak radyo düğmelerine referans vermediğiniz durumlarda yararlı olabilir, örn:

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

7
Ben sadece netlik uğruna, find () aslında tüm seçili öğeleri (verilen seçici ile eşleşen ) arar eklemek istedim . Yalnızca doğrudan çocuk istiyorsanız, () kullanın.
Matt Browne

139

Bu çalışmalı:

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

Girişin etrafında kullanılan "" notuna dikkat edin: Peter J'nin çözümü gibi değil ''


bu seçilen cevap olmalıdır. adı radyo düğmelerini takip etmek için çok güzel bir yol
quemeful

79

: İşaretli seçiciyi radyo seçiciyle birlikte kullanabilirsiniz.

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

13
Ancak bu hoş görünüyor, jQuery belgeleri daha iyi performans için radyo yerine [type = radio] kullanılmasını önerir. Okunabilirlik ve performans arasında bir değiş tokuş. Normalde bu kadar önemsiz konularda performansın okunabilirliğini alıyorum, ancak bu durumda [type = radio] 'nun aslında daha net olduğunu düşünüyorum. Yani bu durumda $ ("form input [type = radio]: işaretli"). Val () gibi görünecektir. Yine de geçerli bir cevap.
Hiçbiri

57

Yalnızca boolean değerini istiyorsanız, yani işaretli veya işaretli değilse bunu deneyin:

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

53

Tüm radyoları alın:

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

Kontrol edileni almak için filtreleyin

radios.filter(":checked")



25

Formu nasıl yazacağım ve kontrol edilen radyoyu nasıl ele alacağım.

MyForm adlı bir form kullanarak:

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

Değeri formdan alın:

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

Formu göndermiyorsanız, şunu kullanarak daha da basitleştireceğim:

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

Sonra kontrol edilen değeri elde etmek:

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

Girişte bir sınıf adına sahip olmak, girişleri kolayca şekillendirmeme izin veriyor ...


24

Benim durumumda bir formda iki radyo düğmesi var ve her düğmenin durumunu bilmek istedim. Aşağıdaki benim için çalıştı:

// get radio buttons value
console.log( "radio1: " +  $('input[id=radio1]:checked', '#toggle-form').val() );
console.log( "radio2: " +  $('input[id=radio2]:checked', '#toggle-form').val() );


    
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="toggle-form">
  <div id="radio">
    <input type="radio" id="radio1" name="radio" checked="checked" /><label for="radio1">Plot single</label>
    <input type="radio" id="radio2" name="radio"/><label for="radio2">Plot all</label>
  </div>
</form>


1
Her düğmenin durumu ne demek? aynı ada sahip radyo düğmeleri sadece birinin kontrol edilmesine izin verir, bu nedenle, işaretli olanı alırsanız, geri kalanı kontrol edilmez.
Demans

17

Bir de JSF üretilen radyo düğmesi (kullanarak <h:selectOneRadio>etiketi), bunu yapabilirsiniz:

radiobuttonvalue = jQuery("input[name='form_id\:radiobutton_id']:checked").val();

Burada selectOneRadio Kimliği radiobutton_id ve form kimliği form_id'dir .

JQuery bu özniteliği kullandığı için ad yerine id yerine ad kullandığınızdan emin olun ( ad , kontrol kimliğine benzeyen JSF tarafından otomatik olarak oluşturulur).


15

Ayrıca, kullanıcının hiçbir şey seçip seçmediğini kontrol edin.

var radioanswer = 'none';
if ($('input[name=myRadio]:checked').val() != null) {           
   radioanswer = $('input[name=myRadio]:checked').val();
}

15

Radyo düğmesi değerlerini ayarlamak ve almak için bir jQuery eklentisi yazdım. Ayrıca, üzerlerindeki "değişim" olayına da saygı gösterir.

(function ($) {

    function changeRadioButton(element, value) {
        var name = $(element).attr("name");
        $("[type=radio][name=" + name + "]:checked").removeAttr("checked");
        $("[type=radio][name=" + name + "][value=" + value + "]").attr("checked", "checked");
        $("[type=radio][name=" + name + "]:checked").change();
    }

    function getRadioButton(element) {
        var name = $(element).attr("name");
        return $("[type=radio][name=" + name + "]:checked").attr("value");
    }

    var originalVal = $.fn.val;
    $.fn.val = function(value) {

        //is it a radio button? treat it differently.
        if($(this).is("[type=radio]")) {

            if (typeof value != 'undefined') {

                //setter
                changeRadioButton(this, value);
                return $(this);

            } else {

                //getter
                return getRadioButton(this);

            }

        } else {

            //it wasn't a radio button - let's call the default val function.
            if (typeof value != 'undefined') {
                return originalVal.call(this, value);
            } else {
                return originalVal.call(this);
            }

        }
    };
})(jQuery);

Eklentiyi etkinleştirmek için kodu herhangi bir yere koyun. O zaman tadını çıkarın! Hiçbir şey bozmadan varsayılan val fonksiyonunu geçersiz kılar.

Bu jsFiddle'ı eylemde denemek ve nasıl çalıştığını görmek için ziyaret edebilirsiniz.

Vaktini boşa harcamak


14

Tek bir formda birden fazla radyo düğmeniz varsa

var myRadio1 = $('input[name=radioButtonName1]');
var value1 = myRadio1.filter(':checked').val();

var myRadio2 = $('input[name=radioButtonName2]');
var value2 = myRadio2.filter(':checked').val();

Bu benim için çalışıyor.



12

Bu iyi çalışıyor

$('input[type="radio"][class="className"]:checked').val()

Çalışma Demosu

:checkedSelektör için çalışır checkboxes, radio buttonsve öğeleri seçin. Yalnızca belirli öğeler için :selectedseçiciyi kullanın .

İçin API :checked Selector


11

Sınıf kullanan seçili radyonun değerini almak için:

$('.class:checked').val()

10

Bu basit komut dosyasını kullanıyorum

$('input[name="myRadio"]').on('change', function() {
  var radioValue = $('input[name="myRadio"]:checked').val();        
  alert(radioValue); 
});

Tüm tarayıcılarda çalışmasını istiyorsanız değişiklik olayı yerine click olayını kullanın
Matt Browne

10

Bunu kullan:

value = $('input[name=button-name]:checked').val();

8

DEMO : https://jsfiddle.net/ipsjolly/xygr065w/

	$(function(){
	    $("#submit").click(function(){      
	        alert($('input:radio:checked').val());
	    });
	 });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.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>


6

1 formda yalnızca 1 radyo düğmesi kümeniz varsa, jQuery kodu şu kadar basittir:

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

5

Bu konuda bir kütüphane yayınladım. Aslında tüm olası giriş değerlerini çeker, ancak hangi radyo düğmesinin kontrol edildiğini de içerir. Şuradan kontrol edebilirsiniz:Https://github.com/mazondo/formalizedata adresinden edebilirsiniz.

Size cevapların bir js nesnesi verecektir, bu yüzden şöyle bir form:

<form>
<input type="radio" name"favorite-color" value="blue" checked> Blue
<input type="radio" name="favorite-color" value="red"> Red
</form>

sana vereceğim:

$("form").formalizeData()
{
  "favorite-color" : "blue"
}

4

JavaScript dizisindeki tüm radyo düğmesi değerlerini almak için aşağıdaki jQuery kodunu kullanın:

var values = jQuery('input:checkbox:checked.group1').map(function () {
    return this.value;
}).get();

2
Radyo düğmeleri onay kutuları ile aynı değildir. Bu örnekte onay kutuları kullanılmaktadır.
Matt Browne

4

dene-

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

console.log(radioVal);

4

Formdaki tüm radyo düğmelerini ve kontrol edilen değeri almak için JQuery.

$.each($("input[type='radio']").filter(":checked"), function () {
  console.log("Name:" + this.name);
  console.log("Value:" + $(this).val());
});

3

Bunu almanın başka bir yolu:

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


2
$(function () {
// Someone has clicked one of the radio buttons
var myform= 'form.myform';
$(myform).click(function () {
    var radValue= "";
    $(this).find('input[type=radio]:checked').each(function () {
        radValue= $(this).val();
    });
  })
});

1

Gönderen bu soruya , Şu anda seçili erişmek için alternatif yol ile geldi inputEğer bir süre varken click, ilgili etiket için olay. Bunun nedeni, yeni seçilenin tıklama etkinliğinden inputsonrasına kadar güncellenmemesidir label.

TL; DR

$('label').click(function() {
  var selected = $('#' + $(this).attr('for')).val();

  ...
});


1

Yapmam gereken C # kodunu basitleştirmekti, bu da ön uç JavaScript'te mümkün olduğunca çok şey yapmaktı. Bir alan kümesi kapsayıcısı kullanıyorum çünkü DNN'de çalışıyorum ve kendi formu var. Bu yüzden bir form ekleyemiyorum.

Hangi metin kutusunun 3 kullanıldığını test etmem gerekiyor ve eğer varsa, arama türü nedir? Değeri ile başlar, Değeri içerir, Değerin Tam Eşleşmesi.

HTML:

<fieldset id="fsPartNum" class="form-inline">
<div class="form-group">
    <label for="txtPartNumber">Part Number:</label>
    <input type="text" id="txtPartNumber" class="input-margin-pn" />
</div>
<div class="form-group">
    <label for="radPNStartsWith">Starts With: </label>
    <input type="radio" id="radPNStartsWith" name="partNumber" checked  value="StartsWith"/>
</div>
<div class="form-group">
    <label for="radPNContains">Contains: </label>
    <input type="radio" id="radPNContains" name="partNumber" value="Contains" />
</div>
<div class="form-group">
    <label for="radPNExactMatch">Exact Match: </label>
    <input type="radio" id="radPNExactMatch" name="partNumber" value="ExactMatch" />
</div>

Ve JavaScript'im:

        alert($('input[name=partNumber]:checked', '#fsPartNum').val()); 
    if(txtPartNumber.val() !== ''){
        message = 'Customer Part Number';
    }
    else if(txtCommercialPartNumber.val() !== ''){

    }
    else if(txtDescription.val() !== ''){

    }

Sadece kimliğine sahip herhangi bir etiketin söylenmesi kullanılabilir. DNNers için bunu bilmek iyidir. Buradaki son hedef, SQL Server'da parça araması başlatmak için gereken orta düzey koda geçmektir.

Bu şekilde çok daha karmaşık önceki C # kodunu da kopyalamak zorunda değilim. Ağır kaldırma burada yapılıyor.

Bunun için biraz bakmalıyım ve sonra işe yaraması için tamir etmeliydim. Yani diğer DNNers için, umarım bu bulmak kolaydır.

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.