Comment Griser pleins de controles (checkbox) en une boucle ???

Signaler
Messages postés
8
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
27 juillet 2004
-
Messages postés
8
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
27 juillet 2004
-
je fais une fonction avec une boucle pour griser des controles d'un formulaire, c'est utile et moins long à charger quand on a 50 controles à griser... et ca m'évite de taper 50 fois la meme ligne:
document.forms["ma_form"].nom.disabled=true ;
document.forms["ma_form"].prenom.disabled=true ;

...

Donc je fourni dans la variable Texte au debut de mon script tous les noms de controle que je souhaite griser

function griser() {
Texte = new Array("nom","prenom","age");
i = 0 ;
while ( Texte[i] )
{
document.forms["ma_form"]. + Texte[i] + .disabled=true ;
i = i + 1;
}
}


Seulement le
 document.forms["ma_form"]. + Texte[i] + .disabled=true ;
ne passe pas et j'ai bien tenter des " document.write(document.forms["ma_form"]. + Texte[i] + .disabled=true) ; et d'autres choses mais rien à faire, Si quelqu'un aurait la solution.
Merci :)

7 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
Bonjour
accéder à tous les champs d'un formulaire :
  for ( n=0;n<formulaire.elements.length;n++)
      {  utiliser formulaire.elements[n] ...    }    

on peut tester leur type:
if (formulaire.elements[n].type=="text") ...

j'espère que j'avais compris la question.
Cordialement. Bul.
Messages postés
8
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
27 juillet 2004

Le soucis est que je ne veut pas griser tous les controles, seulement ceux que je spécifie dans mon tableau Texte[].

Vérifier avec
if (formulaire.elements[n].type=="text") ...
ne vérifie que le type du champs alors que je veux vérifier le nom.

Cette méthode s'applique également dans la mesure ou l'on ne change pas l'ordre des controles puisqu'ils sont désignés par un index.

Mon soucis c'est de pouvoir concaténer a chaque boucle le nom de mon controle avec
 document.forms["ma_form"]. + Texte[i] + .disabled=true ; 
mais il n'accepte pas cette Syntaxe.

Pour etre plus clair si dans votre exemple
if (formulaire.elements[n].type=="text") ...
qui se trouve dans une boucle d'index N, vous vouliez remplacer le 'elements[n]' par le tableau comprenant la liste des element 'tableau[N]' ?

la méthode suivante ne marche pas
if (formulaire. + tableau[n] + .type=="text") ...
puisque c'est celle que j'applique dans mon script.
J'espere avoir été assez clair.
Cordialement, Snow
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
je ne suis pas sûr que l'on puisse y
arriver avec formulaire."nom en variable"
on peut utiliser getElementById(id), du genre :
var toucher=new Array("nomid1","nomid2"....);
for (var i=0;i<toucher.length;i++)
   utiliser getElementById(toucher[i])....

ou en donnant les n° de champs, exemple :
</td></tr></table>
var toucher=new Array(1,3,....);
for (var i=0;i<toucher.length;i++)
utiliser formulaire.elements[toucher[i]]...
</td></tr></table>
attention aux Majuscules/minuscules, Syntaxe :
pas controlé, pas testé.
@+
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
la fin du message a été pommé ?
en donnant les n° de champs, exemple :
var toucher=new Array(1,3,....);
for (var i=0;i<toucher.length;i++)
utiliser formulaire.elements[toucher[i]]...

attention aux Majuscules/minuscules, Syntaxe :
pas controlé, pas testé.
@+
Messages postés
8
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
27 juillet 2004

Ah ca commence a me gonfler, ca marche pas et pour optimiser mes pages il faut ce script marche !
je vais pas taper 50X la ligne pour bloquer les 50 champs si jpeux faire ca en une boucle avec un tableau !

ca devrait marcher ca:
 
<script>
Texte = new Array("nom","prenom","age");
for (i=0;i<3;i++) document.forms[0].getElementById(Texte[i]).disabled=true ;
</script>
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
oui, ça marche

<form name=frm>

</form>
<script type="text/javascript">
Texte = new Array("nom","prenom","age");
for (i=0;i<Texte.length;i++)
    document.getElementById(Texte[i]).disabled=true ;
</script>
</HTML>

Cordialement Bul. [Site] [[mailto:marcel.Bultez@Tiscali.fr Mail]]
Messages postés
8
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
27 juillet 2004

A mon Dieu...
Y'avais une erreur javascript, je pensais ct un gros Bug qui bloquait mes champs alors qu'ils étaient simplement bel et bien griser mais l'erreur provenait du dernier champs qui était mal nommé !
Enfin sous XP, le grisage est bcp moins visible que sous 98 je m'y perds souvent :(

Enfin Voila Je suis bien content merci de ton aide Marcel ;)