Bir grupta hiçbir radyo düğmesinin işaretlenmediğini kontrol etmek için JQuery'yi kullanma


107

Bir sorunla karşılaşıyorum, bir radyo düğmesi grubu içinde hiçbir radyo düğmesinin işaretlenip işaretlenmediğini JQuery ile kontrol etmem gerekiyor, böylece kullanıcılara bir seçeneği işaretlemeyi unuturlarsa bir javascript hatası verebilirim.

Değerleri almak için aşağıdaki kodu kullanıyorum

var radio_button_val = $("input[name='html_elements']:checked").val();

Yanıtlar:


146
if (!$("input[name='html_elements']:checked").val()) {
   alert('Nothing is checked!');
}
else {
  alert('One of the radio buttons is checked!');
}


1
@ScottE - mükemmel bir nokta - Roland bunu kabul etmezse bu yanıtı kaldıracağım.
Dominic Rodger

Bence onu değiştirip .val() == ""kaldırabilirsin !ve her şey hazır olur.
Doug Neiner

@Doug - bu hala ScottE'nin bahsettiği sorun olmaz mıydı? .val()İşaretli radyo düğmesi olsaydı ne dönecekti value=""? (Sanırım bunun oldukça olası bir durum olduğunu iddia edebilirsiniz).
Dominic Rodger

1
Üzgünüm, yorumum kafa karıştırıcıydı: Bütün testin şöyle görünmesini istedim: if ($("input[name='html_elements']:checked").val() == "")Bu "Hiçbir şey kontrol
edilmedi

144

kullanıyorum

$("input:radio[name='html_radio']").is(":checked")

Radyo grubundaki tüm öğeler işaretli değilse FALSE, bir öğe işaretlenmişse TRUE döndürür.


3
Bu cevap, bir radyo düğmesi grubunun seçilmiş bir değere sahip olup olmadığını kontrol etmek için güvenilir bir şekilde çalıştı. Konudaki en iyi cevap.
Andy Cook

1
Hem Dominic Rodger hem de Jacobo Hernández'in yanıtı iyi çalışıyor. Ben şahsen baştaki NOT (!) 'U satırın başında asla kullanmamaya çalışıyorum. Yıllar sonra, bunu gözden kaçırdığınızda ve mantığı tersine çevirdiğinizde hata ayıklamak zorlaşır ... (": kontrol edildi") yaptığınız şey çok açık - En iyi cevap.
Scott

32

Bunun gibi bir şey yapabilirsiniz:

var radio_buttons = $("input[name='html_elements']");
if( radio_buttons.filter(':checked').length == 0){
  // None checked
} else {
  // If you need to use the result you can do so without
  // another (costly) jQuery selector call:
  var val = radio_buttons.val();
}

2
İlk iki satırı tam olarak daraltamaz if ($("input[name='html_elements']:checked").length == 0){mısın?
Powerlord

7
Yapabilirdiniz, ancak bir değerin var olduğunu gösterdiyseniz, değeri almak için başka bir tam jQuery seçimine ihtiyacınız olacaktır.
Doug Neiner

5
if ($("input[name='html_elements']:checked").size()==0) {
   alert('Nothing is checked!');
}
else {
  alert('One of the radio buttons is checked!');
}


2
var len = $('#your_form_id input:radio:checked').length;
      if (!len) {
        alert("None checked");
      };
      alert("checked: "+ len);

2

Bunun basit bir örnek olduğunu düşünüyorum, bir grup radyodaki bir radyonun kontrol edilip edilmediğinin nasıl kontrol edileceği.

if($('input[name=html_elements]:checked').length){
    //a radio button was checked
}else{
    //there was no radio button checked
} 

0

Bu kadar basit kullanıyorum

HTML

<label class="radio"><input id="job1" type="radio" name="job" value="1" checked>New Job</label>
<label class="radio"><input id="job2" type="radio" name="job" value="2">Updating Job</label>


<button type="button" class="btn btn-primary" onclick="save();">Save</button>

SENARYO

 $('#save').on('click', function(e) {
    if (job1.checked)
        {
              alert("New Job"); 
        }
if (job2.checked)
        {
            alert("Updating Job");
        }

}

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.