Cocher plusieurs checkbox javascript
Résolu
mohcultiv
Messages postés
48
Date d'inscription
Statut
Membre
Dernière intervention
-
sa9rsous -
sa9rsous -
salut,
je dois cocher plusieurs case a cocher contenu dans une table en cochant celle qui se trouve en en-tete. Par contre j'ai plusieurs tables.
j'ai essayer ceci:
function clicTous(form,booleen)
{
for (i=0, n=form.elements.length; i<n; i++)
if (form.elements[i].name.indexOf('case') != -1)
form.elements[i].checked = booleen;
}
avec:
<input type="checkbox" onClick="if (this.checked) { clicTous(this.form,true) } else { clicTous(this.form,false) };">
ca marche mais le souci c'est qu'il me coche toutes les cases presentes sur le formulaire, et pas seulement ceux de la table en question.
j'ai essayer autre chose avec getelementbyid() avec le meme id pour chaque case d'une meme table:
function activdesactiv(){
var t,arg=activdesactiv.arguments;
t=arg[0];
if (document.getElementById(t).checked==false){
document.getElementById(t).checked=true;
} else {
document.getElementById(t).checked=false;
}
}
avec:
onclick="activdesactiv('id');"
ca marche aussi mais là il ne me coche que la premiere cases
est ce que quelqun aurait une solution.
merci
je dois cocher plusieurs case a cocher contenu dans une table en cochant celle qui se trouve en en-tete. Par contre j'ai plusieurs tables.
j'ai essayer ceci:
function clicTous(form,booleen)
{
for (i=0, n=form.elements.length; i<n; i++)
if (form.elements[i].name.indexOf('case') != -1)
form.elements[i].checked = booleen;
}
avec:
<input type="checkbox" onClick="if (this.checked) { clicTous(this.form,true) } else { clicTous(this.form,false) };">
ca marche mais le souci c'est qu'il me coche toutes les cases presentes sur le formulaire, et pas seulement ceux de la table en question.
j'ai essayer autre chose avec getelementbyid() avec le meme id pour chaque case d'une meme table:
function activdesactiv(){
var t,arg=activdesactiv.arguments;
t=arg[0];
if (document.getElementById(t).checked==false){
document.getElementById(t).checked=true;
} else {
document.getElementById(t).checked=false;
}
}
avec:
onclick="activdesactiv('id');"
ca marche aussi mais là il ne me coche que la premiere cases
est ce que quelqun aurait une solution.
merci
A voir également:
- Cocher plusieurs checkbox javascript
- Telecharger javascript - Télécharger - Langages
- Supprimer case à cocher excel ✓ - Forum Excel
- Case à cocher excel - Forum MacOS
- Raccourci clavier case à cocher - Forum Clavier
- Supprimer des cases à cocher (Excel 2003) - Forum Excel
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].'"/>
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.
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.
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
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...
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
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