2010-10-20 4 views
25

Je souhaite vérifier le premier bouton radio de chaque groupe. Mais il y a des boutons radio qui sont désactivés, donc le script devrait les ignorer et passer au bouton non-désactivé suivant.Vérifier le premier bouton radio avec JQuery

j'ai écrit quelque chose comme ça, mais il ne fonctionne pas:

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

Merci beaucoup

+0

entrée [type = radio] à la place –

+1

** Ou **, @Haim, 'entrée: radio'. –

Répondre

49

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

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

Si elles sont regroupés par un conteneur parent, alors:

$("#parentId input:radio[disabled=false]:first").attr('checked', true); 
+1

Si vous voulez que l'événement change, lancez '.click()' à la place – Yarin

0

Essayez ceci:

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

Pour vérifier le premier bouton radio que dans un groupe vous pouvez

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

Je crois que l'OP signifiait "groupe" comme dans "tous les boutons radio qui partagent le même nom" –

+0

'first-child' n'est pas juste – sje397

8

Le ci-dessous est ce que vous voulez:

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

Demo à: JS Bin.

+0

Bien que, pour être juste, @ Šime et @rahul fournissent une bonne santé mentale- vérifications. –

+0

'first-child' n'est pas correct – sje397

+0

$ ('input: radio: first-child') sélectionne le premier bouton radio de n'importe quel groupe radio de votre page. –

16
$("input:radio[name=groupX]:not(:disabled):first") 

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

3
<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/

+0

Nice Solution (y) –

Questions connexes