cerhu > comp.lang.* > comp.lang.javascript

Eric BOYER (12/01/2005, 18h19)
Bonjour,

Dans 2 checkbox qui se suivent je souhaiterais avoir le deuxième
disabled par défaut (ca OK) mais l'activer quand on sélectionne le premier :

j'ai essayé :
<form method=post name=categories>
<input type=checkbox name=tabcat[] value=Groupe1
onClick=categories.tabcat[1].disabled=false> G1<br>
<input type=checkbox name=tabcat[] value=g1v1 disabled>g1v1<br>
<input type=submit value='Goooooooo'>
</form>

mais ca marche pas !

Ca ca marche :
<form method=post name=categories>
<input type=checkbox name=tabcat[] value=Groupe1
onClick=categories.tabcat1.disabled=false> G1<br>
<input type=checkbox name=tabcat1 value=g1v1 disabled>g1v1<br>
<input type=submit value='Goooooooo'>
</form>

Par contre je dois OBLIGATOIREMENT récupérer les valeurs dans un tableau ...

Comment faire SVP ?
merci

Eric.
YD (12/01/2005, 19h11)
Eric BOYER a écrit :

> Dans 2 checkbox qui se suivent je souhaiterais avoir le deuxième
> disabled par défaut (ca OK) mais l'activer quand on sélectionne le
> premier :
> j'ai essayé :
> <form method=post name=categories>
> <input type=checkbox name=tabcat[] value=Groupe1
> onClick=categories.tabcat[1].disabled=false> G1<br>


J'essaierai avec :
<input type="checkbox" name="tabcat[]" value="Groupe1"
onclick="this.form.elements('tabcat[]')[1].disabled=false"> G1<br>

> <input type=checkbox name=tabcat[] value=g1v1 disabled>g1v1<br>
> <input type=submit value='Goooooooo'>
> </form>


Et il vaut mieux mettre les attributs entre quotes...
Cenekemoi (13/01/2005, 10h21)
Bonjour à YD <yd-news> qui nous a écrit :
> Eric BOYER a écrit :
>> J'essaierai avec :

> <input type="checkbox" name="tabcat[]" value="Groupe1"
> onclick="this.form.elements('tabcat[]')[1].disabled=false"> G1<br>
>> Et il vaut mieux mettre les attributs entre quotes...


Exact, mais dans ce cas autant remplacer "tabcat[]" par "tabcat" tout
simplement ! Ce qui donne :

<form method=post name=categories>

<input type="checkbox" name="tabcat" value="Groupe1"
onclick="this.form.elements('tabcat')[1].disabled=false"> G1<br>

<input type="checkbox" name="tabcat" value=g1v1 disabled>g1v1<br>
<input type=submit value='Goooooooo'>
</form>

Mais cela répond-il au besoin d'Eric ?
Eric (13/01/2005, 12h00)
> Exact, mais dans ce cas autant remplacer "tabcat[]" par "tabcat" tout
> simplement ! Ce qui donne :
> <form method=post name=categories>
> <input type="checkbox" name="tabcat" value="Groupe1"
> onclick="this.form.elements('tabcat')[1].disabled=false"> G1<br>
> <input type="checkbox" name="tabcat" value=g1v1 disabled>g1v1<br>
> <input type=submit value='Goooooooo'>
> </form>
> Mais cela répond-il au besoin d'Eric ? Non ca donne :


Erreur : this.form.elements is not a function
Cenekemoi (13/01/2005, 17h13)
Bonjour à Eric" <"eric.boyer[ANTIVOL]
<"eric.boyer[ANTIVOL]"> qui nous a écrit :
> Non ca donne :
> Erreur : this.form.elements is not a function


Désolé, il faut des crochets :
onclick="this.form.elements['tabcat'][1].disabled=false"> G1<br>
ASM (13/01/2005, 17h14)
Eric a ecrit :
> > <input type="checkbox" name="tabcat" value=g1v1 disabled>g1v1<br>
> > <input type=submit value='Goooooooo'>
> > </form>
> > Mais cela répond-il au besoin d'Eric ?

> Non ca donne :
> Erreur : this.form.elements is not a function


Normalement :

<form>
<input type="checkbox" name="tabcat" value="Groupe1"
onclick="tabcat[1].disabled=false"> G1<br>
<input type="checkbox" name="tabcat" value=g1v1 disabled>g1v1<br>
</form>

tabcat[1].disabled

devrait fonctionner
mais il est toujours prudent de stipuler toute l'arborescence

document.forms[0].elements['tabcat'][1].disabled
YD (13/01/2005, 20h38)
Cenekemoi a écrit :
> Bonjour à YD <yd-news> qui nous a écrit :
>> J'essaierai avec :
>> <input type="checkbox" name="tabcat[]" value="Groupe1"
>> onclick="this.form.elements('tabcat[]')[1].disabled=false"> G1<br>

> [...] mais dans ce cas autant remplacer "tabcat[]" par "tabcat" tout
> simplement ! [...] Mais cela répond-il au besoin d'Eric ?

Il me semble que 'tabcat[]' permet de récupérer un tableau PHP des valeurs
des INPUT qui portent ce nom. Est-ce qu'en écrivant 'tabcat' on obtient le
même résultat ?
Eric (14/01/2005, 10h49)
Merci

il fallait faire :

<form method=post name=categories>

<input type="checkbox" name="tabcat[]" value="Groupe1"
onclick="this.form.elements['tabcat[]'][1].disabled=false;this.form.elements['tabcat[]'][2].disabled=false">
G1<br>

<input type="checkbox" name="tabcat[]" value=g1v1 disabled>g1v1<br>
<input type="checkbox" name="tabcat[]" value=g1v2 disabled>g1v2<br>
<input type="hidden" name="val1" value="OK">
<input type=submit value='Goooooooo'>
</form>
Eric (14/01/2005, 11h16)
et en fait il faut faire ca pour prendre en compte le decochage

merci a tous :

<form method=post name=categories>

<input type="checkbox" name="tabcat[]" value="Groupe1"
onclick="
if (this.form.elements['tabcat[]'][0].checked==true) {
this.form.elements['tabcat[]'][1].disabled=false;
this.form.elements['tabcat[]'][2].disabled=false;
}
else {
this.form.elements['tabcat[]'][1].disabled=true;
this.form.elements['tabcat[]'][2].disabled=true;
}
"> G1<br>

<input type="checkbox" name="tabcat[]" value=g1v1 disabled>g1v1<br>
<input type="checkbox" name="tabcat[]" value=g1v2 disabled>g1v2<br>
<input type="hidden" name="val1" value="OK">
<input type=submit value='Goooooooo'>
</form>
Cenekemoi (17/01/2005, 11h20)
Bonjour à Eric" <"eric.boyer[ANTIVOL]
<"eric.boyer[ANTIVOL]"> qui nous a écrit :
[..]
> this.form.elements['tabcat[]'][1].disabled=true;
> this.form.elements['tabcat[]'][2].disabled=true;
> }
> "> G1<br>
> <input type="checkbox" name="tabcat[]" value=g1v1 disabled>g1v1<br>
> <input type="checkbox" name="tabcat[]" value=g1v2 disabled>g1v2<br>
> <input type="hidden" name="val1" value="OK">
> <input type=submit value='Goooooooo'>
> </form>


Donc, pour faire cela, je confirme : nul besoin de mettre les crochets
derrière "tabcat".

Ceci est quand même plus facile à lire :

<form method=post name=categories>

<input type="checkbox" name="tabcat" value="Groupe1"
onclick="
if (this.form.tabcat[0].checked==true) {
this.form.tabcat[1].disabled=false;
this.form.tabcat[2].disabled=false;
}
else {
this.form.tabcat[1].disabled=true;
this.form.tabcat[2].disabled=true;
}
"> G1<br>

<input type="checkbox" name="tabcat" value=g1v1 disabled>g1v1<br>
<input type="checkbox" name="tabcat" value=g1v2 disabled>g1v2<br>
<input type="hidden" name="val1" value="OK">
<input type=submit value='Goooooooo'>
</form>
L'ermite (17/01/2005, 11h52)
Cenekemoi wrote:
> if (this.form.tabcat[0].checked==true) {
> this.form.tabcat[1].disabled=false;
> this.form.tabcat[2].disabled=false;
> }
> else {
> this.form.tabcat[1].disabled=true;
> this.form.tabcat[2].disabled=true;
> }


Pourquoi écrire huit lignes alors que deux suffisent?

this.form.tabcat[1].disabled=!this.form.tabcat[0].checked;
this.form.tabcat[2].disabled=!this.form.tabcat[0].checked;

UnBooleen==true équivaut strictement au booleen lui-même. "==true" ne sert à rien.
De même, devoir assigner un "true" dans une clause if et un "false" dans le
else, sans aucune différence de code, revient à injecter directement la valeur
de la condition du if.
Cenekemoi (17/01/2005, 14h00)
Bonjour à L'ermite <lermiiite> qui nous a
écrit :
> Pourquoi écrire huit lignes alors que deux suffisent?
> this.form.tabcat[1].disabled=!this.form.tabcat[0].checked;
> this.form.tabcat[2].disabled=!this.form.tabcat[0].checked;


Toutafé, mais...

Pourquoi écrire deux lignes alors qu'une seule suffit?

this.form.tabcat[1].disabled = this.form.tabcat[2].disabled =
!this.form.tabcat[0].checked;
Eric (18/01/2005, 11h23)
Cenekemoi a écrit :
> Bonjour à L'ermite <lermiiite> qui nous a
> écrit :
> Toutafé, mais...
> Pourquoi écrire deux lignes alors qu'une seule suffit?
> this.form.tabcat[1].disabled = this.form.tabcat[2].disabled =
> !this.form.tabcat[0].checked;

trop fort !
Discussions similaires
recuperer le tableau d'un formulaire checkbox

? recuperer ds 1 tableau avec for..next checkbox indicées

[checkbox] executer une requete HTML en cliquant dans une checkbox

disabled ?


Fuseau horaire GMT +2. Il est actuellement 04h27. | Privacy Policy