web-dev-qa-db-fra.com

Vérifier le premier bouton radio avec JQuery

Je voudrais cocher le premier bouton radio de chaque groupe. Mais certains boutons radio sont désactivés, le script doit donc les ignorer et passer au bouton suivant non désactivé.

J'ai écrit quelque chose comme ça mais ça ne marche pas:

$ (document) .ready (function () {
 if ($ ("input ['radio']). is (': disabled')) 
 {
 $ ( this) .attr ('vérifié', faux); 
} 
 else 
 {
 $ (this) .attr ('vérifié', true); 
} 
});

Merci beaucoup

29
Matthew

Si vos boutons sont regroupés par leur attribut de nom, essayez:

$("input:radio[name=groupName][disabled=false]:first").attr('checked', true);

S'ils sont regroupés par un conteneur parent, alors:

$("#parentId input:radio[disabled=false]:first").attr('checked', true);
60
sje397
$("input:radio[name=groupX]:not(:disabled):first")

Cela devrait vous donner le premier bouton radio non désactivé d'un groupe ...

17
Šime Vidas

Ce qui suit fait ce que vous voulez:

$(document).ready(
  function(){
    $('input:radio:first-child').attr('checked',true);
  }
  );

Démo sur: JS Bin .

8
David Thomas
<input type="radio" name="r1"><br>
<input type="radio" name="r1"><br>
<hr>
<input type="radio" name="r2"><br>
<input type="radio" name="r2"><br>
<input type="radio" name="r2"><br>

<script>
$(function(){
    //removed duplicates form the following array
    $(jQuery.unique(
        //create an array with the names of the groups
        $('INPUT:radio')
            .map(function(i,e){
                return $(e).attr('name') }
            ).get()
    ))
    //interate the array (array with unique names of groups)
    .each(function(i,e){
        //make the first radio-button of each group checked
        $('INPUT:radio[name="'+e+'"]:visible:first')
            .attr('checked','checked');
    });
});
</script>

jsfiddle = http://jsfiddle.net/v4auT/

3
Floyd

J'ai testé la première réponse et cela ne la résout pas. J'ai dû utiliser la phrase suivante:

jQuery("input:radio[name=groupName]:visible")[0].checked=true;

Ceci vérifie le premier bouton radio visible avec name = groupName

2
Andres

Essaye ça :

 $("input:radio:not(:disabled)").attr("checked", true);

Pour cocher le premier bouton radio uniquement dans un groupe, vous pouvez

 $("parentelement input:radio:not(:disabled):first-child").attr("checked", true);
1
rahul