Page 1 sur 1

Fonction desactiver plusieurs select

Posté : 12 oct. 2007, 10:29
par agité
Bonjour,


je cherche a désactiver plusieurs select lorsqu'un seul est checked j'ai fais le script suivant ;

Code : Tout sélectionner

function ReactChamp() { if (document.getElementsByName("programme").checked) { document.getElementsByName("numLot").disable="true"; document.getElementsByName("ville").disable="true"; } else if (document.getElementsByName("numLot").checked) { document.getElementsByName("programme").disable="true"; document.getElementsByName("ville").disable="true"; } else if (document.getElementsByName("ville").checked) { document.getElementsByName("programme").disable="true"; document.getElementsByName("numLot").disable="true"; } }

Code : Tout sélectionner

onClick="ReactivChamp()";

Rien ne se passe quand je clic sur un des select

Une idée ?

Posté : 12 oct. 2007, 10:36
par d0m
petit commencement de debuggage pour t'orienter :

Code : Tout sélectionner

function ReactChamp() { alert(document.getElementsByName("programme").checked); if (document.getElementsByName("programme").checked) { document.getElementsByName("numLot").disable="true"; document.getElementsByName("ville").disable="true"; } else if (document.getElementsByName("numLot").checked) { document.getElementsByName("programme").disable="true"; document.getElementsByName("ville").disable="true"; } else if (document.getElementsByName("ville").checked) { document.getElementsByName("programme").disable="true"; document.getElementsByName("numLot").disable="true"; } }

Posté : 12 oct. 2007, 10:41
par agité
il faut que je fasse passer la valeur du champ qui est selectionner pour deselectionner les autres

pour ca je fais passer la valeur dans la fonction ReactChamp :

Code : Tout sélectionner

onClick="ReactivChamp("programme")";
pour programme et de suite pour le reste et dans le javascript :

Code : Tout sélectionner

function ReactChamp(nom) { alert(document.getElementsByName("nom").checked); if (document.getElementsByName("programme").checked) { document.getElementsByName("numLot").disable="true"; document.getElementsByName("ville").disable="true"; } else if (document.getElementsByName("numLot").checked) { document.getElementsByName("programme").disable="true"; document.getElementsByName("ville").disable="true"; } else if (document.getElementsByName("ville").checked) { document.getElementsByName("programme").disable="true"; document.getElementsByName("numLot").disable="true"; } }

Posté : 12 oct. 2007, 11:33
par agité
en mettant une valeur element qui est renvoyer par javascript rien ne se passe

Code : Tout sélectionner

function ReactChamp(element) { alert(document.getElementsByName(element).checked); if (document.getElementsByName("programme") = document.getElementsByName(element)) { document.getElementsByName("numLot").disable="true"; document.getElementsByName("ville").disable="true"; } else if (document.getElementsByName("numLot") = document.getElementsByName(element)) { document.getElementsByName("programme").disable="true"; document.getElementsByName("ville").disable="true"; } else if (document.getElementsByName("ville") = document.getElementsByName(element)) { document.getElementsByName("programme").disable="true"; document.getElementsByName("numLot").disable="true"; } }
la valeur renvoyée est

Code : Tout sélectionner

onClick="ReactivChamp(this.element)";

Posté : 12 oct. 2007, 11:55
par d0m
qu'est ce qu'il t'affiche en alert?

Posté : 12 oct. 2007, 11:56
par agité
il ne retourne pas d'alert :?

Posté : 12 oct. 2007, 12:48
par d0m
c'est que ta fonction n'est même pas appelée.
=> c'est donc dans l'appel de ta fonction qu'il y a un problème :

Pour une liste c'est onChange et pas onClick.

Posté : 12 oct. 2007, 13:05
par agité
j'ai tenter de mettre le onChange sur les SELECT :

<SELECT name="programme" onChange="ReactivChamp(this.element);"; tabindex="3" class="inputch2_n" onBlur="this.className='inputch2_n'" onFocus="this.className='inputch2_s'" >
et le tester juste avec :
function ReactChamp(elem)
{
alert('acctiv'.document.form1.programme.checked);
}


mais toujours rien n'est retourné

Posté : 12 oct. 2007, 13:38
par d0m
Dans ce cas il va falloir sortir les grands moyens :
j'ai bien peur qu'il va falloir que tu appelles ta fonction javascript avec son nom correct.... :wink:

Code : Tout sélectionner

function ReactChamp(element) ......
<SELECT [...] onChange="ReactivChamp(this.element);" [...]>

Posté : 12 oct. 2007, 13:50
par agité
mdr quel timbré je fais :o

bon maintenant pour
alert(document.getElementsByName("programme").checked);
il me retourne undifined

Posté : 12 oct. 2007, 14:03
par d0m
il me retourne undifined
exact, tout simplement parce que l'attribut checked n'existe pas pour les listes déroulantes, c'est l'attribut selectedIndex qui est l'index de l'élément selectionné.

Posté : 12 oct. 2007, 14:36
par agité
Ok j'ai donc fait ca :

Code : Tout sélectionner

function ReactivChamp() { if (document.form1.programme.selectedIndex != 0) { document.form1.numLot.disable="true"; document.form1.ville.disable="true"; } else if (document.form1.numLot.selectIndex) != 0) { document.form1.programme.disable="true"; document.form1.ville.disable="true"; } else if (document.form1.ville.selectIndex != 0) { document.form1.programme.disable="true"; document.form1.numLot.disable="true"; } }
si le selectedIndex est different de 0 donc si au moins des element est selectionné on vas desactiver les 2 autres.

pourtant rien ne se passe

Posté : 12 oct. 2007, 15:53
par agité
Trouvé !

Code : Tout sélectionner

function ReactivChamp() { if (document.getElementById("programme").selectedIndex != 0) { document.getElementById("numLot").disabled=true; document.getElementById("ville").disabled=true; } else if(document.getElementById("numLot").selectedIndex != 0) { document.getElementById("programme").disabled=true; document.getElementById("ville").disabled=true; } else if(document.getElementById("ville").selectedIndex != 0) { document.getElementById("programme").disabled=true; document.getElementById("numLot").disabled=true; } }
et

Code : Tout sélectionner

<SELECT name="programme" id="programme" onChange="ReactivChamp()" tabindex="3" class="inputch2_n" onBlur="this.className='inputch2_n'" onFocus="this.className='inputch2_s'" > <option value="none" id="defaut" name="defaut" defaut="checked">Choissisez un programme</option>