Javascript et checkbox

Résolu/Fermé
Lilouse64 Messages postés 99 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 9 avril 2012 - 15 mars 2010 à 09:15
Lilouse64 Messages postés 99 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 9 avril 2012 - 19 mars 2010 à 10:47
Bonjour,

J'ai un soucis en javascript. Je souhaite utiliser des checkbox construis avec php dans une boucle for (avec des nom en fonction de la boucle du coup. Pour chaque ligne de mon for, je créais 2 checkbox et je souhaite au final que si on coche une case d'une ligne si l'autre était déja coché, ça la décoche.

Voici ma fonction javascript appelé lorsqu'on clic sur un des checkbox :
function cbcritere(cb, ligne){
var namecb = cb + "_" + ligne;
var cbselect= "document.ajoutconcours." + namecb +".checked";
alert (cbselect);
if (cbselect){
alert ("un chekbox vient d\'être coché");
} else{
alert ("un chekbox vient d\'être décoché");
}
}

cb est un texte qui représente l'un des 2 checkbox de la ligne et ligne un entier pour la ligne en question.
namcb est le nom de ma checkbox

lorsque je fais if(document.ajoutconcours.namecb.checked), ma fonction ne s'exécute pas car elle cherche un élement de mon formulaire ajoutconcours qui s'appel namecb alors que namecb est une variable et non le nom en lui même...
j'ai donc créé une variable intermédiaire pour recuperer la valeur de namecb mais la du coup mon cbselect vaut document.ajoutconcours.cb1_1.checked par exemple au lieu de 1 ou 0.

Es ce que vous avez une solution pour que je puisse faire un if(document.ajoutconcours.cb1_1.checked)
en sachant que cb1_1 est dans une variable ?

Merci d'avance

3 réponses

Lilouse64 Messages postés 99 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 9 avril 2012 12
15 mars 2010 à 09:51
Je viens de trouver une alternative à mon problème au lieu d'utiliser le nom je prend le numéro de l'élément du formulaire :
if (cb=="cbexige"){
numelement=2* ligne-1+2;
}
if (cb == "cbrefuse"){
numelement=2* ligne+2;
}
if (document.forms['ajoutconcours'].elements[numelement].checked){


il y a 3 éléments avant mes checkbox et comme la numérotation des éléments commence à 0 j'ai dut mettre un +2.

Le problème avec cette méthode et si je rajoute par la suite d'autre éléments à mon formulaire il faudra que je change ma formule pour calculer le numéro de l'élément du coup je suis toujours à la recherche d'une solution à mon premier problème mais j'ai toujours cette solution en attendant.
Lilouse64 Messages postés 99 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 9 avril 2012 12
16 mars 2010 à 15:14
Personne ne sais comment faire ?
Lilouse64 Messages postés 99 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 9 avril 2012 12
19 mars 2010 à 10:47
J'ai trouvé une solution :
Je donne à mon checkbox un id ayant la même valeur que le nom et j'utilise getElementById pour accéder à la checkbox voulu.

Du coup ma fonction deviens :
function cbcritere(cb, ligne){
				var namecb = cb + "_" + ligne;
				if (cb=="cbexige"){
					var namecbopose="cbrefuse_" + ligne;
				}
				if (cb == "cbrefuse"){
					var namecbopose="cbexige_" + ligne;
				}
				if (document.getElementById(namecb).checked){
					document.getElementById(namecbopose).checked=false;
				}
}