Rechercher : dans
Par :

Cocher plusieurs checkbox javascript

Dernière réponse le 22 oct 2008 à 17:52:13 mohcultiv, le 15 mar 2007 à 12:44:14 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « cocher plusieurs checkbox javascript » dans :
Javascript - Modifier la hauteur (height) d'un élément HTML VoirPour modifier la hauteur d'un élément HTML en javascript, il suffit d'utiliser sa propriété de style "height". Pour cela vous pouvez y faire référence de la manière suivante : Si vous souhaitez connaître la hauteur (height) d'un bloc HTML, il...
Javascript - Librairies d'effets pour vos images VoirAu gré de vos explorations du web, vous avez vu de superbes effets de présentation des images. Et ça vous plairaît bien de pouvoir proposer les mêmes à vos visiteurs. Voici quelques solutions en Javascript couplées à des CSS. Elles sont plus...
Javascript - La notion d'objet VoirNotion d'objet Le but de cette section n'a pas pour ambition de traîter de la programmation orientée objet mais de donner une idée de ce qu'est un objet, concept nécessaire à la création de scripts Javascript. Le Javascript traite les éléments qui...
Javascript - Les événements VoirQu'appelle-t-on un événement? Les événements sont des actions de l'utilisateur, qui vont pouvoir donner lieu à une interactivité. L'événement par excellence est le clic de souris, car c'est le seul que le HTML gère. Grâce au Javascript il est...
Javascript - Les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. En Javascript, les noms de variables peuvent être aussi long que l'on désire,...

1

Reivax962, le 15 mar 2007 à 12:51:00
  • +3

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.

Répondre à Reivax962

2

mohcultiv, le 15 mar 2007 à 14:10:47

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

Répondre à mohcultiv

3

Reivax962, le 15 mar 2007 à 14:12:42
  • +4

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.

Répondre à Reivax962

4

mohcultiv, le 15 mar 2007 à 14:23:03
  • +1

Form.elements[i].name.indexOf('table'+num_table)

et tu remplace name par id?

Répondre à mohcultiv

5

Reivax962, le 15 mar 2007 à 14:24:55
  • +2

Oui :)

Répondre à Reivax962

6

mohcultiv, le 15 mar 2007 à 14:46:53

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

Répondre à mohcultiv

7

Reivax962, le 15 mar 2007 à 14:52:01

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...

Répondre à Reivax962

8

mohcultiv, le 15 mar 2007 à 15:18:09

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.

Répondre à mohcultiv

9

 Pich, le 22 oct 2008 à 17:52:13

Encore mieux !!!


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].'"/>

Répondre à Pich
Collection CommentÇaMarche.net