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?



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"); }
});

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


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!


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();

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         
}

10

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

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

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. 
}

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.


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...


Réponse la plus utile
amal50


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{}});

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
    }

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");
    }


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>


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

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

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

2
Cela définit la valeur de la checkedpropriété, au lieu de l'interroger.
Marc.2377
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.