Traitement des cases à cocher par lot
Bonjour,
J'ai 3 groupes de cases à cocher chk[]. Pour chacun des groupes j'ai une case à cocher chkAll qui force à cocher toutes les cases à cocher de son groupe et lorsqu'elle est décochée vide toutes les cases de ce groupe. Si une case quelconque du groupe est décochée, la case chkAll est automatiquement décochée.
Maintenant, je voudrais que si toutes les cases du groupe sont cochées la case chkAll soit automatiquement cochée mais je ne vois pas comment faire.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| const
chkAll = document.querySelectorAll("[name*='chkAll']")
,chk = document.querySelectorAll("[name*='chk']")
;
var sum = [];
if(chkAll.length){
chkAll.forEach(function(curChk, index){
curChk.addEventListener('change', function(e){
switch(e.target.value){
case 'customers':
for(let i=0; i<13; i++){
chk[i].checked = curChk.checked;
}
break;
case 'infos':
for(let i=14; i<18; i++){
chk[i].checked = curChk.checked;
}
break;
case 'employees':
for(let i=19; i<28; i++){
chk[i].checked = curChk.checked;
}
break;
}
}, false );
});
}
if(chk.length){
chk.forEach(function(curChk, index){
curChk.addEventListener('change', function(e){
let n;
if(index<13)
n=0;
else if(index>18)
n=2;
else
n=1;
if(curChk.checked == false){
chkAll[n].checked = false;
}
}, false );
});
} |
Extrait du code HTML
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <fieldset><legend>Données du fichier adresses</legend>
<label><input type="checkbox" name="chk[]" value="c.id"><span>Identifiant client</span></label><br>
<label><input type="checkbox" name="chk[]" value="c.company_name"><span>Société cliente</span></label><br>
<label><input type="checkbox" name="chk[]" value="c.company_fullname"><span>Complément</span></label><br>
<p>
<label><input type="checkbox" name="chkAll" value="customers"><span>Sélectionner tout le cadre</span></label><br>
</p>
</fieldset>
<fieldset><legend>Données du fichier interlocuteurs</legend>
<label><input type="checkbox" name="chk[]" value="e.gender"><span>Civilité</span></label><br>
<label><input type="checkbox" name="chk[]" value="e.title"><span>Titre</span></label><br>
<label><input type="checkbox" name="chk[]" value="e.firstname"><span>Prénom</span></label><br>
<p>
<label><input type="checkbox" name="chkAll" value="employees"><span>Sélectionner tout le cadre</span></label><br>
</p>
</fieldset> |