2011-12-23 3 views
1

Comment puis-je valider les groupes de cases à cocher avec JQuery? Je dois m'assurer que dans chaque groupe au moins une case est cochée. Je voudrais utiliser une classe pour identifier les groupes, donc, le code HTML ressemblerait à ceci:Validation des groupes de cases à cocher multiples JQuery

<!-- checkbox group --> 
<fieldset class="CbxGroup"> 
    <legend>Checkbox Group (required)</legend> 
    <label><input type="checkbox" name="cbxGroup1[]" value="one" id="cbxGroup1_0">One </label> 
    <br> 
    <label><input type="checkbox" name="cbxGroup1[]" value="two" id="cbxGroup1_1">Two </label> 
    <br> 
    <label><input type="checkbox" name="cbxGroup1[]" value="three" id="cbxGroup1_2">Three</label> 
    <br> 
    <label><input type="checkbox" name="cbxGroup1[]" value="four" id="cbxGroup1_3">Four </label> 
    <br> 
    <label><input type="checkbox" name="cbxGroup1[]" value="five" id="cbxGroup1_4">Five </label> 
    <br> 
</fieldset> 

Parce que les cases n'ont pas un élément d'emballage comme la liste de sélection/menu, je ne sais pas comment arracher ça. Pour les cases à cocher simples, je peux faire quelque chose comme ce qui suit, mais cela ne fonctionne pas pour les groupes de cases à cocher:

Merci!

$('.CbxSingle').each(function() { 
     var CbxCheck = $(this); 
     if(!CbxCheck.is(':checked')) { 
      // do something 
     } 
     else{ 
      // do something else 
     } 
    }); 

Je voudrais quelque chose comme ce qui suit qui validerait chaque groupe séparément:

$('.CbxGroup').each(function() { 
     if ($('input[type=checkbox]:checked').length == 0) { 
      alert('not selected!'); 
     } 
     else{ 
      alert('selected!'); 
     } 
    }); 

Répondre

3

Peut-être quelque chose comme ça pourrait fonctionner:

if($(".CbxSingle input[type=checkbox]:checked").length != 0){ 
    // Run success code 
}else{ 
    // Run failure code 
} 

Il est en fait une référence très similaire sur le site de documentation de jQuery pour le: sélecteur coché: http://api.jquery.com/checked-selector/

Espérons que ça aide!

+0

Merci beaucoup! C'était exactement ce dont j'avais besoin. Je pensais que ça allait être très compliqué mais ça s'est avéré si simple. – user1002039

+0

Oups! J'ai parlé trop tôt. Si j'ajoute un autre groupe de cases à cocher, il les valide en un seul groupe plutôt que deux groupes distincts. Une idée de comment je peux le faire pour valider chaque groupe séparément? . – user1002039

+0

$ (». McCbxGroup ') chacune (function() { \t \t \t if ($ (.' Entrée [type = case à cocher]: cochée) longueur == 0) { \t \t alert ('non sélectionné! '); \t \t} \t \t else { \t \t \t \t alert (' sélectionné ')! \t \t \t} \t \t}); – user1002039

2

Cela pourrait fonctionner pour ce que vous décrivez:

var numberChecked=$("input[name='cbxGroup1[]']:checked").length; 
if(numberChecked<1) 
    alert('none checked'); 
else 
    alert(numberChecked+' checked); 
+0

Cela vous permettrait également d'avoir plusieurs groupes de cases à cocher, il suffit de changer le nom des cases à cocher et vous pouvez réutiliser le code dans votre formulaire. –

+0

Je ne pense pas que cela fonctionnerait. J'ai besoin d'identifier les groupes avec le nom de la classe. Cela signifie que je dois identifier toutes les cases d'un groupe et m'assurer qu'au moins un est sélectionné. De cette façon, je peux avoir plusieurs groupes et les valider tous de la même façon sans écrire de code pour chaque groupe séparément. – user1002039

+0

Vous pouvez changer le nom pour tous les groupes. Donc c'est pour cbxGroup1 [], si vous avez un cbxGroup2 [], alors faites une autre variable pour celles qui sont vérifiées. Voici un violon pour vous de le voir en action: http://jsfiddle.net/Ygcc8/ –

0

Je crée une légère variation as a fiddle, et il semble fonctionner très bien. Je pense que votre problème est la classe .CbxSingle n'est pas appliquée à la input s, de sorte que vous pouvez utiliser un sélecteur différent comme .CbxGroup input[type=checkbox].

+0

Le code ci-dessus pour les cases à cocher simples fonctionne bien. Ce n'est pas pour les groupes de cases à cocher qui est ce dont j'ai besoin, donc je peux avoir plusieurs groupes sans écrire de code séparé pour chacun. – user1002039

+0

Essayez de remplacer '$ ('. CbxSingle')' dans votre fragment JavaScript avec '$ ('. CbxGroup input [type = checkbox]')'. – sczizzo

Questions connexes