Forum de discussion
Forum « Programmation Javascript » (archives)
Re: cocher tous mes checkbox
Envoyé: 3 mai 2004, 9h25 par Oznog
Tellement d'erreur pour un si petit code. En plus mélangé avec le PHP rien pour arranger ton cas.
On va y aller à la base, car ton problème n'a pas de solution à cause d'un racoucit PHP incompatible avec le Javascript!
La base (voir les tutoriels sur les formulaires dans la section Javascript)
1. Utilisation du this
Dans ta fonction tu utilise this qui n'est bien sûr pas le formulaire mais la fonction elle-même this=Check_all. Pour utiliser le formulaire tu dois le passer (ou le cibler directement document.monForm...)
onClick="Check_all(this.form)"
Ainsi la fonction maintenant "Check_all(_form)" pourra utiliser le formulaire en passant par "_form" et nom pas this.
2. Le code devrait donc être
for (i = 0; i < _form.multi_supp.length; i++) _form.multi_supp[i].checked = true;
3. Maintenant le formulaire va partir alors tu doit l'anuler avec le "return".
onClick="return Check_all(this.form)"
Et à la fin de la fonction "return false"
4. Code complet
function Check_all(_form) {
for (i = 0; i < _form.multi_supp.length; i++) _form.multi_supp[i].checked = true ;
return false
}
<input name="tout_cocher" type="image" id="tout_cocher" onClick="return Check_all(this.form)" src="images/ok.gif" width="20" height="18" >
5. L'usage des braquette "[]" est un code caché pour indiquer au moteur PHP des "spliter" la chaîne dans une matrice (array). Malheureusment ce n'est pas une véritable matrice MAIS UN SIMPLE NOM D'ÉLÉMENT, en d'autres mots une astuce pour ne pas avoir à faire ce travail manuellement en PHP (chose qui se fait donc en menuelle en deux lignes de code, dans le forum PHP s.v.p.) lors de la réception via l'en-tête HTTP.
MAIS LE Javascript ne comprend pas ces braquette, il plante tout simplement.
C'est un peu m'élangeant pour un débutant car l'élément de type "checkbox" est lui-même une matrice dans l'objet formulaire. (pas ce qui passera par l'en-tête HTTP mais bien l'élément "checkbox" du DOM de la page.)
Tu ne peux certes pas cibler le nom "_form.multi_supp[]" puis en même temps la matrice "_form.multi_supp[i]" ce qui devrait donner :
_form.multi_supp[][i], interprété par le javascript comme une matrice à deux dimensions comportant une erreur!
Ciao
Oznog
Réponses
|