Radyo düğmesinin JQuery ile kontrol edilip edilmediğini öğrenin?


584

Bir radyo düğmesini ince işaretli olarak ayarlayabilirim, ancak yapmak istediğim, belirli bir radyo düğmesi işaretlendiğinde etkinleşen bir tür 'dinleyici' kurmak.

Örneğin, aşağıdaki kodu alın:

$("#element").click(function()
{ 
    $('#radio_button').attr("checked", "checked");
});

işaretli bir özellik ekler ve her şey yolundadır, ancak uyarı eklemeye nasıl devam ederim. Örneğin, radyo düğmesi, tıklama işlevi yardımı olmadan kontrol edildiğinde açılır mı?



1
İlgili Monitoring when a radio button is unchecked stackoverflow.com/questions/5824639/...
Adrien Be

Yanıtlar:


1082
$('#element').click(function() {
   if($('#radio_button').is(':checked')) { alert("it's checked"); }
});

Bingo! teşekkürler David. Bu yüzden uyarıyı göstermek için bir eylemi (tıklama vb.) Başlatmam gerekir mi? Bunu tıklamadan yapmanın bir yolu var mı?
Keith Donegan

3
Bu, "tıklama işlevinin yardımı olmadan" çözülmez, değil mi?
Znarkus

5
@Znarkus: OP memnun görünüyor. kendi kullanımınızın ('#radio_button').clickonsuz olduğunu iddia eder misiniz click?
David Hedlund

3
@David İkinci satır if ($('#radio_button').is(':checked'))) { alert("it's checked"); }- jQuery $ işaretini unuttum ve sonra hepsini daha fazla parantez içinde sarmanız gerekiyor.
zuallauz

2
@zua: haklısın! daha önce olduğu gibi bir sözdizimi hatası bile vardı (eşsiz parantezler). sabit
David Hedlund

154

Aynı ad özelliğini paylaşan bir grup radyo düğmeniz varsa ve gönderdikten sonra veya bu radyo düğmelerinden birinin işaretli olup olmadığını kontrol etmek istediğiniz bir olay varsa, bunu yalnızca aşağıdaki kodla yapabilirsiniz:

$(document).ready(function(){
  $('#submit_button').click(function() {
    if (!$("input[name='name']:checked").val()) {
       alert('Nothing is checked!');
        return false;
    }
    else {
      alert('One of the radio buttons is checked!');
    }
  });
});

Kaynak

jQuery API Ref


Bu benim için işe yaramadı. Eğer uyarırsam ($ ("input [@ name = 'shipping_method']: işaretli"). Val ()); radyo düğmesi seçili olmasa bile hala bana değer veriyor.
AndrewC

1
Not: Aynı adı kullanan radyo düğmesi gruplarına sahip birkaç formunuz varsa, yalnızca gönderilen formun formlarını kontrol ettiğinizden emin olmanız gerekir. Bunu yapmanın bir yolu, formdaki find yöntemini kullanmaktır: $('#myform').submit(function(event){ if (!$(this).find("input[name='name']:checked").val()) {
Benjamin

41

Parag'ın çözümü benim için bir hata attığında, işte benim çözümüm (David Hedlund ve Parag'ları birleştirerek):

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

Bu benim için iyi çalıştı!


32

Değişim olayı IE'de çalışmadığından, onay kutusunun click olayını bağlamanız gerekir.

$('#radio_button').click(function(){
    // if ($(this).is(':checked')) alert('is checked'); 
    alert('check-checky-check was changed');
});

Şimdi programlı olarak durumu değiştirdiğinizde, bu olayı da tetiklemeniz gerekir:

$('#radio_button').attr("checked", "checked");
$('#radio_button').click();

18

// Sınıfı kontrol et

if($("input:radio[class='className']").is(":checked")) {
     //write your code         
}

// Adı kontrol et

if($("input:radio[name='Name']").is(":checked")) {
         //write your code         
}

// Verileri kontrol etme

if($("input:radio[data-name='value']").is(":checked")) {
         //write your code         
}

10

Başka bir yol da kullanmaktır (jQuery> = 1.6) :prop

$("input[type=radio]").click(function () {
    if($(this).prop("checked")) { alert("checked!"); }
});

Gerçekten .prop()çok daha hızlı ve yazması daha kolaydır.
Marc.2377

10

Çözüm basit olacak, çünkü belirli bir radyo düğmesi işaretlendiğinde 'dinleyicilere' ihtiyacınız var. Yap :-

if($('#yourRadioButtonId').is(':checked')){ 
// Do your listener's stuff here. 
}

6

Bir tıklama işlevi istemiyorsanız Jquery değiştirme işlevini kullanın

$('#radio_button :checked').live('change',function(){
alert('Something is checked.');
});

Aradığınız cevap bu olmalı. 1.9.1'in üzerindeki Jquery sürümünü kullanıyorsanız, canlı işlev kullanımdan kaldırıldığı için kullanmaya çalışın.


6

... Teşekkürler çocuklar ... tüm ihtiyacım olan setteki her radyo düğmesinin farklı bir kimliği olduğu kontrol edilen radyo düğmesinin 'değeri' idi ...

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

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


En faydalı cevap
amal50


3

dinamik oluşturulan Radyo Düğmesi Radyo alma değerini kontrol edin

$("input:radio[name=radiobuttonname:checked").val();

Dinamik Radyo düğmesini değiştirdikten sonra

$('input[name^="radioname"]').change(function () {if (this.value == 2) { }else{}});

3

$ ('. radio-button-class-name'). ('işaretlendi') benim için çalışmadı, ancak sonraki kod iyi çalıştı:

    if(typeof $('.radio-button-class-name:checked').val() !== 'undefined'){
     // radio button is checked
    }

1
Kimliğiniz yerine bir sınıfla kullandığınızdan, öğe yerine bir nodelist döndürürdü. $('.radio-button-class-name').first().is(':checked')çalışmış olmalıydı.
Levi Johansen

2

bunu dene

    if($('input[name="radiobutton"]:checked').length == 0) {
        alert("Radio buttons are not checked");
    }


0

jQuery hala popülerdir, ancak bağımlılığınız yoksa aşağıya bakın. ES-2015'te radyo düğmesinin işaretli olup olmadığını öğrenmek için kısa ve net fonksiyon:

function getValueFromRadioButton( name ){
  return [...document.getElementsByName(name)]
         .reduce( (rez, btn) => (btn.checked ? btn.value : rez), null)
}

console.log( getValueFromRadioButton('payment') );
<div>  
  <input type="radio" name="payment" value="offline">
  <input type="radio" name="payment" value="online">
  <input type="radio" name="payment" value="part" checked>
  <input type="radio" name="payment" value="free">
</div>


-3
$("#radio_1").prop("checked", true);

1.6'dan önceki jQuery sürümleri için şunu kullanın:

$("#radio_1").attr('checked', 'checked');

2
Bu , özelliği sorgulamak yerine değerini ayarlarchecked .
Marc.2377
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.