Page 1 sur 1

Controle de deux liste déroulante

Posté : 01 avr. 2008, 17:08
par jajax
Bonjour

Je voudrais valider deux listes déroulantes c'est à dire rendre obligatoire le choix dans les 2 listes déroulantes

Les valeurs dans les deux listes deroulantes sont des dates

Voici deux options que je voudrais faire

si l'utlisateur ne choisit pas => boite de dialogue javascript lui obligeant de choisir

si date1>date2 ==> boite de dialogue javascript lui informant un erreur


merci pour votre aide ou lien

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 01 avr. 2008, 17:15
par Ryle
Pour vérifier qu'une option a été sélectionnée dans une liste déroulante, il te suffit de vérifier que l'attribut selectedIndex de celle-ci est supérieur à -1 (ou 0 si tu met une option de type "choisissez." en début de liste)
if (document.nom_formulaire.nom_champ.selectedIndex <= 0) 
  alert ('Vous devez renseigner le champ ...');
Pour récupérer la valeur sélectionnée d'une liste déroulante :
document.nom_formulaire.nom_champ.options[document.nom_formulaire.nom_champ.selectedIndex].value
Certains navigateurs acceptent aussi
document.nom_formulaire.nom_champ.value
mais pas encore tous... donc autant utiliser la première, même si elle est plus longue à taper :)

Quant à la comparaison de date, tout dépend du format, mais ce ne sont pas les exemples qui doivent manquer sur le forum ou le web ;)

Posté : 01 avr. 2008, 22:00
par Aureusms
Pour vérifier qu'une option a été sélectionnée dans une liste déroulante, il te suffit de vérifier que l'attribut selectedIndex de celle-ci est supérieur à -1 (ou 0 si tu met une option de type "choisissez." en début de liste)
if (document.nom_formulaire.nom_champ.selectedIndex <= 0) 
  alert ('Vous devez renseigner le champ ...');
Hmm interessant. Est ce que cela marche aussi avec document.getElementById ?

Posté : 02 avr. 2008, 10:07
par jajax
Bonjour

voici le code que j'ai ecrit :

function Control()
 {
    if (document.Form.champ.selectedIndex <= 0)
     {
       alert (' choisir une date!');   
       return false;
     }
	  else if(document.Form.champ1.selectedIndex <= 0)
     {
		alert (' choisir une date!');   
        return false;
	  }elseif(document.Form.champ.options[document.Form.champ.selectedIndex].value > document.Form.champ1.options[document.Form.champ1.selectedIndex].value )
	  {
		alert ('La première date choisie doit être inférieure au second !');   
       return false;
      } 
	  else if(document.Form.champ.options[document.Form.champ.selectedIndex].value = document.Form.champ1.options[document.Form.champ1.selectedIndex].value )
	  {
		alert ('Les dates doivent être différentes !');   
       return false; 
	  } else{ return true;}
 }

ça marche sauf le dernier test :
if(document.Form.champ.options[document.Form.champ.selectedIndex].value = document.Form.champ1.options[document.Form.champ1.selectedIndex].value )
Mes dates sont aux formats 2008-03-22 par exemple

Si je choisi 2008-03-22 et 2008-03-22 dans les 2 listes déroulantes le message d'alerte s'affiche bien ==> là c'est OK :)
Or si je choisi 2008-03-22 et 2008-04-01 l'alerte s'affiche encore alors que les date sont différentes :( ???
Là je suis bloqué


merci pour votre conseil

Posté : 02 avr. 2008, 10:55
par guilt92
Attention à toujours mettre == pour comparer des valeurs et non pas = qui sert à l'affectation d'une valeur... ;)

La dans ton dernier elseif tu donnes la même valeur aux deux dates et tu rentres forcement dans ce elseif si la première valeur existe...

Posté : 02 avr. 2008, 11:18
par jajax
OK :) ça a marché merci

bien à vous :)

Posté : 02 avr. 2008, 11:29
par Ryle
Hmm interessant. Est ce que cela marche aussi avec document.getElementById ?
Normalement, y a pas de raison que cela ne fonctionne pas.

Que tu passes par getElementById ou par le dom, tant que les deux te retournent bien l'objet select, tu peux consulter son attribut selectedIndex pour savoir quelle ligne est sélectionnée :)

Posté : 02 avr. 2008, 15:32
par Aureusms
Merci Ryle.