Cocher plusieurs checkbox javascript
Résolu/Fermé
mohcultiv
Messages postés
48
Date d'inscription
vendredi 9 février 2007
Statut
Membre
Dernière intervention
19 juin 2007
-
15 mars 2007 à 12:44
sa9rsous - 27 juin 2010 à 13:01
sa9rsous - 27 juin 2010 à 13:01
A voir également:
- Cocher plusieurs checkbox javascript
- Telecharger javascript - Télécharger - Langages
- Vba checkbox value ✓ - Forum Excel
- A javascript error occurred in the main process - Forum Matériel & Système
- Javascript void 0 c'est quoi ✓ - Forum Réseaux sociaux
- Comment cocher une case sur word ✓ - Forum Word
10 réponses
Encore mieux !!!
fonction js :
la case pour tout cocher ou "$arr_nbGrp[0]" correspond à votre nombre total de case à cocher
et enfin les case à cocher générer par une boucle
fonction js :
function selectAll($nbTotal,baseId,etat) { for(i=1;i<=$nbTotal;i++) { document.getElementById(baseId+i).checked = etat; } }
la case pour tout cocher ou "$arr_nbGrp[0]" correspond à votre nombre total de case à cocher
<input type="checkbox" onClick="selectAll('.$arr_nbDep[0].',\'checkDep\', this.checked);" >
et enfin les case à cocher générer par une boucle
<input type="checkbox" name="checkDep'.$arr_liste[depid].'" id="checkDep'.$arr_liste[depid].'" value="'.$arr_liste[dep_value].'"/>
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
15 mars 2007 à 12:51
15 mars 2007 à 12:51
Bonjour,
Un "id" est forcément unique. Tu n'as pas le droit d'avoir plusieurs éléments qui ont le même id dans ta page, c'est pour ça qu'il n'a utilisé que le premier.
Par contre, tu peux rajouter un chiffre derrière l'id.
Par exemple, les id de tes checkbox pourraient être :
id="table1_chk1"
id="table1_chk2"
id="table1_chk3"
id="table1_chk4"
id="table2_chk1"
id="table2_chk2"
id="table2_chk3"
id="table2_chk4"
En faisant comme ça, tu peux reprendre la même méthode que précédemment :
function clicTous(form,booleen,num_table)
{
for (i=0, n=form.elements.length; i<n; i++)
if (form.elements[i].name.indexOf('table'+num_table) != -1)
form.elements[i].checked = booleen;
}
Avec l'argument "num_table" le numéro de ta table. Tu peux l'adapter comme tu veux, mais ça devrait fonctionner.
Un "id" est forcément unique. Tu n'as pas le droit d'avoir plusieurs éléments qui ont le même id dans ta page, c'est pour ça qu'il n'a utilisé que le premier.
Par contre, tu peux rajouter un chiffre derrière l'id.
Par exemple, les id de tes checkbox pourraient être :
id="table1_chk1"
id="table1_chk2"
id="table1_chk3"
id="table1_chk4"
id="table2_chk1"
id="table2_chk2"
id="table2_chk3"
id="table2_chk4"
En faisant comme ça, tu peux reprendre la même méthode que précédemment :
function clicTous(form,booleen,num_table)
{
for (i=0, n=form.elements.length; i<n; i++)
if (form.elements[i].name.indexOf('table'+num_table) != -1)
form.elements[i].checked = booleen;
}
Avec l'argument "num_table" le numéro de ta table. Tu peux l'adapter comme tu veux, mais ça devrait fonctionner.
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
15 mars 2007 à 14:12
15 mars 2007 à 14:12
Tu peux conserver tes attributs "name", mais utiliser comme je te l'ai dit les attributs "id" pour les différencier les unes des autres.
mohcultiv
Messages postés
48
Date d'inscription
vendredi 9 février 2007
Statut
Membre
Dernière intervention
19 juin 2007
8
15 mars 2007 à 14:10
15 mars 2007 à 14:10
Merci pour ta réponse.
J'avais déja envisagé cette solution, en fait tu personalise le nom de tes checkbox en fonctions de la table.
Le souci c'est que les noms de mes checkbox sont tous de la forme indic + i ou i est incrémenté (indic1, indic2,..). Cela est plus facile pour moi afin de récuppérer la valeur de mes checkbox sur une autre page.
donc je ne peux pas personaliser les noms des cases en fonctions de leur tables, et donc toutes mes cases vonte etre cochés en meme temps.
merci encore
J'avais déja envisagé cette solution, en fait tu personalise le nom de tes checkbox en fonctions de la table.
Le souci c'est que les noms de mes checkbox sont tous de la forme indic + i ou i est incrémenté (indic1, indic2,..). Cela est plus facile pour moi afin de récuppérer la valeur de mes checkbox sur une autre page.
donc je ne peux pas personaliser les noms des cases en fonctions de leur tables, et donc toutes mes cases vonte etre cochés en meme temps.
merci encore
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mohcultiv
Messages postés
48
Date d'inscription
vendredi 9 février 2007
Statut
Membre
Dernière intervention
19 juin 2007
8
15 mars 2007 à 14:23
15 mars 2007 à 14:23
form.elements[i].name.indexOf('table'+num_table)
et tu remplace name par id?
et tu remplace name par id?
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
15 mars 2007 à 14:24
15 mars 2007 à 14:24
Oui :)
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
15 mars 2007 à 14:52
15 mars 2007 à 14:52
Je ne connais pas bien l'Asp...
A priori, ce serait plutôt la deuxième solution qui serait la bonne :
onclick="clicTous(this.form,true,<%response.write(nbf)%>)"
Quand tu fais ça, ça ne marche pas, mais quel est le code source côté navigateur ? Pour voir si la bonne valeur a bien été donnée par le serveur...
A priori, ce serait plutôt la deuxième solution qui serait la bonne :
onclick="clicTous(this.form,true,<%response.write(nbf)%>)"
Quand tu fais ça, ça ne marche pas, mais quel est le code source côté navigateur ? Pour voir si la bonne valeur a bien été donnée par le serveur...
mohcultiv
Messages postés
48
Date d'inscription
vendredi 9 février 2007
Statut
Membre
Dernière intervention
19 juin 2007
8
15 mars 2007 à 15:18
15 mars 2007 à 15:18
non en fait ca marche la bonne valeur à été donnée , c juste que dans le id j'avais mal orthographier.
je te remercie pour tous et d'avoir répondu aussi rapidement.
salut.
je te remercie pour tous et d'avoir répondu aussi rapidement.
salut.
for ( i = 0 ; i < oForm.elements.length ; i++ ) {
oElement = oForm.elements[i] ;
// tagName permet de connaître le nom de l'élément
// Je ne m'intéresse qu'aux <input> de type checkbox
// Les .toLowerCase( ) me permettent d'être insensible à la casse
if ( oElement.tagName.toLowerCase( ) == "input" ) {
if ( oElement.type.toLowerCase( ) == "checkbox" ) {
// La propriété checked est à true si la checkbox est cochée
if ( oElement.checked == true ) {
n++ ;
}
}
}
}
return n
oElement = oForm.elements[i] ;
// tagName permet de connaître le nom de l'élément
// Je ne m'intéresse qu'aux <input> de type checkbox
// Les .toLowerCase( ) me permettent d'être insensible à la casse
if ( oElement.tagName.toLowerCase( ) == "input" ) {
if ( oElement.type.toLowerCase( ) == "checkbox" ) {
// La propriété checked est à true si la checkbox est cochée
if ( oElement.checked == true ) {
n++ ;
}
}
}
}
return n
mohcultiv
Messages postés
48
Date d'inscription
vendredi 9 février 2007
Statut
Membre
Dernière intervention
19 juin 2007
8
15 mars 2007 à 14:46
15 mars 2007 à 14:46
ok je te remercie mais g encore une question.
en fait mon num table est un entier "nbf" que j'incrémente en asp
donc lorsque j'appele la fonction dans le onclick je suis obligé de le spécifier. si je fais
onclick="clicTous(this.form,true,nbf)"
ca marche pas et si je fais
onclick="clicTous(this.form,true,<%response.write(nbf)%>)"
ca marche pas non plus alors comment faire?
merci
en fait mon num table est un entier "nbf" que j'incrémente en asp
donc lorsque j'appele la fonction dans le onclick je suis obligé de le spécifier. si je fais
onclick="clicTous(this.form,true,nbf)"
ca marche pas et si je fais
onclick="clicTous(this.form,true,<%response.write(nbf)%>)"
ca marche pas non plus alors comment faire?
merci