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";
}
}
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 :
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
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....
<SELECT [...] onChange="ReactivChamp(this.element);" [...]>
Posté : 12 oct. 2007, 13:50
par agité
mdr quel timbré je fais
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>