Je me doutais que je n'avais pas été clair
En fait, j'ai créé mon formulaire en php. Donc, de ce côté, pas de souci, mes 100 checkbox sont générés.
Voilà tel que cela se présente :
Une première partie avec 8 checkbox :
Code :
- <td width='10'>
- <input type='checkbox' name='ei_1' id='ei_1' onClick='compteur_ei(this.form,this,$nbre_ei)'>
- </td>
- <td width='150' id='td_ei_1' style='$style_ei_1'>
- <font face='$police' size='2'>Abjuration</font>
- <td>
- <td width='10'>
- <input type='checkbox' name='ei_2' id='ei_2' onClick='compteur_ei(this.form,this,$nbre_ei)'>
- </td>
- <td width='150' id='td_ei_2' style='$style_ei_2'>
- <font face='$police' size='2'>Divination</font>
- <td>
|
En voilà 2 mais les 6 autres se présentent de la même façon.
Ensuite, la deuxième partie, générant jusqu'à une centaine de checkbox.
Code :
- <td width='10'>
- <input type='checkbox' name='$id' id='$id'>
- </td>
- <td width='230' id='td_$ecole'>
- <font face='$police' size='2'>$nom_sort</font>
- <input type='hidden' name='$ecole' id='$ecole' value='$ecole_sort'>
- </td>
|
Pour mieux comprendre, chaque zone se compose de la même manière
- Une checkbox (dont le nom est composé comme suit : name_1_1, name_1_2, name_1_3, etc...)
- Un nom qui peut être grisé en modifiant l'id du td composé comme suit : td_ecole_1_1, td_ecole_1_2, td_ecole_1_1, etc...
- Un input caché permettant d'identifier la checkbox par rapport à ma première zone. le nom et l'id sont composés comme suit : ecole_1_1, ecole_1_2, ecole_1_3, etc... Pour la valeur, il y en a 8 possibles...
Ensuite, je veux que lorsque je clique dans une checkbox de la première partie, les éléments de la seconde partie qui ont une valeur égale à la première se désactivent.
Voici le script qui fonctionne
Code :
- if (typeof(form.name_1_1) != "undefined" )
- {
- if ((form.ecole_1_1.value==ei_1) || (form.ecole_1_1.value==ei_2))
- {
- form.name_1_1.checked=false;
- form.name_1_1.disabled=true;
- document.getElementById("td_ecole_1_1" ).style.color='gray';
- }
- else
- {
- form.name_1_1.disabled=false;
- document.getElementById("td_ecole_1_1" ).style.color='black';
- }
- }
- if (typeof(form.name_1_2) != "undefined" )
- {
- if ((form.ecole_1_2.value==ei_1) || (form.ecole_1_2.value==ei_2))
- {
- form.name_1_2.checked=false;
- form.name_1_2.disabled=true;
- document.getElementById("td_ecole_1_2" ).style.color='gray';
- }
- else
- {
- form.name_1_2.disabled=false;
- document.getElementById("td_ecole_1_2" ).style.color='black';
- }
- }
|
Mais comme j'ai quand même plus d'une centaine de checkbox générée, j'aurais voulu trouver un moyen plus rapide, en utilisant une boucle, comme je l'ai expliqué plus haut, du genre :
Code :
- for (var i=1;i<=128;i++)
- {
- if (typeof(form.name_1_+i) != "undefined" )
- {
- if ((form.ecole_1_+i.value==ei_1) || (form.ecole_1_+i.value==ei_2))
- {
- form.name_1_+i.checked=false;
- form.name_1_+i.disabled=true;
- document.getElementById("td_ecole_1_"+i).style.color='gray';
- }
- else
- {
- form.name_1_+i.disabled=false;
- document.getElementById("td_ecole_1_"+i).style.color='black';
- }
- }
|
J'ai vraiment essayé beaucoup de choses différentes, mais sans succès
---------------
http://www.lancedragon.fr