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


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

Bunların hepsini şöyle alabilirim:

$("form :radio")

Hangisinin seçildiğini nasıl bilebilirim?


2293
2018-02-27 19:53


Menşei




Cevaplar:


Değerini almak için seçilmiş  radioName kimlikli bir form öğesi 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>


3535
2018-02-27 19:58



Bunu kullanarak sona erdi: $ ('form girişi [tip = radyo]: kontrol edildi') - juan
@PeterJ: Neden sadece iki argüman yerine '#myform input[name=radioName]:checked'? - Sophie Alpert
jQuery, doğru bir şekilde seçildiğinde en iyi performansı gösterir ve ID ile seçmek her zaman en yüksek performans gösteren seçicidir. İki argüman metodu bunu yapmanın başka bir yoludur. - Peter J
Neden: radyo: kontrol edildi? - Bakaburg
En iyi performans için, dokümanlar: radyo seçiciyi kullanmamanızı tavsiye eder. api.jquery.com/radio-selector - Peter J


Bunu kullan..

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

370
2018-01-07 00:45



Formunuzda birden fazla radyo düğmesi seti varsa, bu sadece ilk kümenin değerini alır, bence. - Brad
Bu sadece formda kontrol edilen ilk radyo düğmesinin değerini döndürür. Peter J'nin önerdiği gibi yapılmalı. - MickJ
@MickJ Bu kod parçası, Peter J'den biriyle aynı ... Orijinal sorunun kullanım durumu göz önünde bulundurulduğunda. Ancak, çeşitli radyo düğmeleri gruplarınız varsa, işe yaramaz. Bu yüzden kullanımı daha iyidir [name = selector] - Lyth
@Brad'ın belirttiği gibi, bu sadece ilk setin değerini alacaktır. İstediğiniz, ".val ()" ifadesini ".map (function () {return this.value;}) ile değiştirmektir. Get ();" - am_
Buna değer bir şey için, (ihtiyaç duymadan önce optimizasyon yapmayı 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


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

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

Kullan filter() işlev, değil find(). (find() çocuk / soylu elementleri bulmak içindir filter() Seçiminizdeki üst düzey öğeleri arar.)

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

Notlar: Bu cevap orijinal olarak, önerilen bir başka yanıtı düzeltiyordu find()Bu değişmiş gibi görünüyor. find() Bir konteyner elemanına referans verdiğiniz durum için hala yararlı olabilir, ancak radyo düğmelerine değil, örn .:

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

256
2018-02-09 18:25



Ben sadece, netlik uğruna, bu () aslında aramaları bulmak için eklemek istedim. herşey altta bulunan elemanlar (verilen seçiciyle eşleşen). Sadece doğrudan çocuk istiyorsanız, çocukları kullanın (). - Matt Browne


Bu çalışmalı:

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

Girişin etrafındaki "" işaretine dikkat edin: Peter J'nin çözümü gibi kontrol edin ve yapmayın.


119
2018-03-30 22:29





Kontrol düğmesini kullanarak radyo seçiciyi kullanabilirsiniz.

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

69
2018-02-27 20:00



Bu güzel görünüyor, ancak jQuery belgeleri daha iyi performans için telsiz yerine [type = radio] kullanılmasını önerir. Okunabilirlik ve performans arasında bir takas. Normalde bu tür önemsiz konularda performans üzerinde okunabilirlik alıyorum, ama bu durumda [tip = radyo] aslında daha net olduğunu düşünüyorum. Yani bu durumda $ ("form girişi [type = radio]: checked") val () gibi görünecektir. Yine de geçerli bir cevap. - J.Money


Sadece boolean değerini istiyorsanız, yani eğer kontrol edildiyse ya da denemediğinizde:

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

42
2017-08-30 20:27





Tüm radyoları al:

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

Kontrol edileni almak için filtrele

radios.filter(":checked")

42
2017-09-01 17:55





Başka bir seçenek:

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

35
2017-09-21 19:35



Burada ": radyo" kısmı gerekli değildir. - Matt Browne


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

25
2017-10-16 20:20