Découvrez si le bouton radio est coché avec JQuery?

584

Je peux définir un bouton radio sur coché correctement, mais ce que je veux faire, c'est configurer une sorte d '«écouteur» qui s'active lorsqu'un certain bouton radio est coché.

Prenons 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 procéder pour ajouter une alerte. Par exemple, cela apparaît lorsque le bouton radio est coché sans l'aide de la fonction de clic?

Keith Donegan
la source
2
la duplication possible de la vérification du bouton radio spécifique est vérifiée
Felix Kling
1
connexes Monitoring when a radio button is unchecked stackoverflow.com/questions/5824639/...
Adrien Soyez

Réponses:

1082
$('#element').click(function() {
   if($('#radio_button').is(':checked')) { alert("it's checked"); }
});
David Hedlund
la source
Bingo! merci David. Dois-je donc invoquer une action (cliquez sur etc.) pour afficher l'alerte? Existe-t-il un moyen de le faire sans cliquer?
Keith Donegan
3
Cela ne résout pas le "sans l'aide de la fonction de clic", n'est-ce pas?
Znarkus
5
@Znarkus: OP semble satisfait. diriez-vous que votre propre utilisation ('#radio_button').clickest sans click?
David Hedlund
3
@David La deuxième ligne devrait être if ($('#radio_button').is(':checked'))) { alert("it's checked"); }: vous avez oublié le signe jQuery $ et vous devez ensuite tout mettre entre parenthèses.
zuallauz
2
@zua: vous avez raison! il y avait même une erreur de syntaxe, comme avant (parenthèses inégalées). corrigé
David Hedlund
154

Si vous avez un groupe de boutons radio partageant le même attribut de nom et lors de la soumission ou d'un événement que vous souhaitez 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!');
    }
  });
});

La source

Réf API jQuery

Parag
la source
Cela n'a pas fonctionné pour moi. Si j'alerte ($ ("input [@ name = 'shipping_method']: vérifié"). Val ()); il me donne toujours la valeur même si le bouton radio n'est pas sélectionné.
AndrewC
1
Remarque: Si vous avez plusieurs formulaires avec des groupes de boutons radio portant le même nom, vous devez vous assurer de ne cocher que ceux du formulaire soumis. Une option pour ce faire est d'utiliser la méthode de recherche sur le formulaire: $('#myform').submit(function(event){ if (!$(this).find("input[name='name']:checked").val()) {
Benjamin
41

Comme la solution de Parag m'a provoqué une erreur, voici ma solution (combinant celle de David Hedlund et celle de Parag):

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

CA marchait bien pour moi!

Patrick DaVader
la source
32

Vous devez lier l'événement click de la case à cocher, 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 modifiez l'état par programme, vous devez également déclencher cet événement:

$('#radio_button').attr("checked", "checked");
$('#radio_button').click();
Znarkus
la source
18

// Vérifier dans la classe

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

// Vérifier le nom

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

// Vérifier les données

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

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

$("input[type=radio]").click(function () {
    if($(this).prop("checked")) { alert("checked!"); }
});
Saeb Amini
la source
En effet, il .prop()est beaucoup plus rapide et plus simple à taper.
Marc.2377
10

La solution sera simple, car vous avez juste besoin d'écouteurs lorsqu'un certain bouton radio est coché. Fais le :-

if($('#yourRadioButtonId').is(':checked')){ 
// Do your listener's stuff here. 
}
Shah-Kodes
la source
6

Si vous ne voulez pas de fonction de clic, utilisez la fonction de changement Jquery

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

Cela devrait être la réponse que vous recherchez. si vous utilisez la version Jquery supérieure à 1.9.1, essayez d'utiliser on car la fonction live a été dépréciée.

iCezz
la source
6

... Merci les gars ... tout ce dont j'avais besoin était la "valeur" du bouton radio coché où chaque bouton radio de l'ensemble avait un identifiant différent ...

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

travaille pour moi...

Bill Warren
la source
Réponse la plus utile
amal50
5

Utilisation de tous les types de boutons radio et de navigateurs

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

Travailler Jsfiddle ici

Thyagarajan C
la source
3

bouton radio généré dynamiquement Vérifier la valeur de la radio

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

Bouton Modifier la radio dynamique

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

$ ('. radio-button-class-name'). is ('checked') ne fonctionnait pas pour moi, mais le code suivant fonctionnait bien:

    if(typeof $('.radio-button-class-name:checked').val() !== 'undefined'){
     // radio button is checked
    }
Jokerius
la source
1
Puisque vous l'avez utilisé avec une classe au lieu d'un ID, il aurait retourné une liste de nodosités, au lieu d'un élément. $('.radio-button-class-name').first().is(':checked')aurait dû fonctionner.
Levi Johansen
2

essaye ça

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

Essaye ça:

alert($('#radiobutton')[0].checked)
Nandha kumar
la source
0

jQuery est toujours populaire, mais si vous ne souhaitez pas avoir de dépendances, voir ci-dessous. Fonction courte et claire pour savoir si le bouton radio est coché sur ES-2015:

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>

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

Pour les versions de jQuery antérieures à 1.6, utilisez:

$("#radio_1").attr('checked', 'checked');
Jayendra Manek
la source
2
Cela définit la valeur de la checkedpropriété, au lieu de l'interroger.
Marc.2377