2010-02-16 9 views
468

Je peux définir un bouton radio pour bien vérifier, mais ce que je veux faire est de configurer une sorte de 'écouteur' qui s'active quand un bouton radio est cochée.Découvrez si le bouton radio est coché avec JQuery?

Prenez, par exemple le code suivant:

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

il ajoute un attribut vérifié et tout va bien, mais comment pourrais-je aller sur ajouter une alerte. Par exemple, cela apparaît lorsque le bouton radio est coché sans l'aide de la fonction de clic?

+2

copie possible de [Vérifier le bouton radio spécifique est cochée] (http://stackoverflow.com/questions/2195125/check-of-specific-radio-button-is-checked) –

+1

related 'Surveillance lorsqu'un bouton radio est décoché 'http://stackoverflow.com/questions/5824639/monitoring-when-a-radio-button-is-unchecked –

Répondre

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

Bingo! merci David. Alors devrais-je invoquer une action (cliquer sur etc) pour afficher l'alerte? Y at-il un moyen de le faire sans cliquer? –

+0

Eh bien, vous pouvez lancer le 'is (': checked')' vérifier à chaque fois. donc si vous voulez montrer quelque chose au chargement de la page, selon que la case est cochée, par exemple, vous pouvez simplement mettre la même instruction if dans le chargement de la page. –

+3

Cela ne résout pas le "sans l'aide de la fonction de clic", n'est-ce pas? – Znarkus

28

Vous devez lier l'événement click de la case, car l'événement change ne fonctionne pas dans IE.

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

Maintenant, lorsque vous changez de programme l'état, vous devez déclencher cet événement aussi:

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

+1 pour l'avertissement IE –

124

Si vous avez un groupe de boutons radio partageant le même attribut name et sur présentation ou un événement que vous vous voulez vérifier si l'un de ces boutons radio a été vérifié, vous pouvez le faire simplement par le code suivant:

$(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!'); 
    } 
    }); 
}); 

Source

jQuery API Ref

+0

Cela n'a pas fonctionné pour moi. Si je alert ($ ("input [@ name = 'shipping_method']: coché"). Val()); il me donne toujours la valeur même si le bouton radio n'est pas sélectionné. – AndrewC

+14

Ok, ça a marché ... enlevé le signe @. – AndrewC

+1

Note: Si vous avez plusieurs formulaires avec des groupes de boutons radio utilisant le même nom, vous devez vous assurer de ne vérifier que ceux du formulaire soumis. Une option pour ce faire est d'utiliser la méthode find sur le formulaire: '$ ('# myform'). Submit (fonction (événement) { if (! $ (This) .find (" entrée [name = 'nom'] ]: checked "). val()) {' – Benjamin

6

Si vous ne voulez pas une fonction de clic utilisation Jquery changement fonction

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

Cela devrait être la réponse que vous recherchez. si vous utilisez la version de Jquery au-dessus de 1.9.1 , essayez d'utiliser cette option car la fonction live était obsolète.

35

Comme solution de Parag a jeté une erreur pour moi, voici ma solution (combinant David Hedlund et de Parag de):

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

Cela a bien fonctionné pour moi!

5

... Merci les gars ... tout ce que je avais besoin était la « valeur » du bouton radio vérifié où chaque bouton radio dans l'ensemble avait un autre id ...

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

fonctionne pour moi. ..

2

essayer cette

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

// Vérifiez par classe

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

// Vérifiez par nom

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

// Vérifiez par les données

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

Qu'en est-il id? Est-ce juste radio [id = 'id'] ... etc ... –

8

Une autre façon est d'utiliser prop(jQuery> = 1.6):

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

En effet '.prop()' est beaucoup plus rapide et simplement plus facile à taper –

1

Essayez ceci:

alert($('#radiobutton')[0].checked) 
3

Bouton radio généré dynamique Vérifiez la valeur get radio

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

Sous le changement dynamique bouton radio

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

Travailler avec tous les types de boutons radio et navigateurs

if($('#radio_button_id')[0].checked) { 
    alert("radiobutton checked") 
} 
else{ 
    alert("not checked"); 
} 

Working Jsfiddle Here

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

Pour les versions de jQuery avant 1.6, utilisez:

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

Ceci * définit * la valeur de la propriété 'checked', au lieu de l'interroger. –

5

La solution sera simple, Comme vous avez juste besoin d '«auditeurs» quand un bouton radio est cochée. Faites-le: -

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

$ ('bouton radio classe nom. ') Est (' checked') ne fonctionnait pas pour moi, mais le code suivant a bien fonctionné:

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