Pb de liste déroulante (ASP ou javascript)

Fermé
TITOU - 28 mai 2004 à 12:40
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 - 31 mars 2007 à 16:37
Bonjour,
Vous trouverez ci-dessous une page que je viens de développer et qui permet à une personne qui visite mon site de sélectionner une date d'arrivéeetune date de départ. Il y a un peu de javascript pour obliger la personne à rentrer son nom et son email.
Pb : je ne sais pas comment empêcher que l'on puisse sélectionner dans les listes déroulantes la date du 31 février 2004 ou du 31 juin 2004, etc...
Je fais donc appel à votre aide.
Merci




<html>

<head>
(...)
</head>


<body>

<script language="JavaScript"><!--

function testmail(email) {
var reg = /^[A-Za-z0-9._-]+@[A-Za-z0-9.-]{2,}[.][A-Za-z]{2,4}$/
return (reg.exec(email)!=null)
}

function testform(fnom, fcourriel, farriveem)
{
if(fnom.value=="") {
alert("Votre nom est nécessaire !")
fnom.focus(); return false }

if(!testmail(fcourriel.value)) { alert("Email invalide !"); fcourriel.focus(); return false }


return true

}


//--></script>




RESERVATION
<br>
<hr align="center">
<form method="POST" action="r02.asp" onSubmit="return testform(this.fnom, this.fcourriel)" name="elementr01">
<p><b><br>
NOM *:</b><br>
<input type="text" name="fnom" size="40"></p>
<p><b>Prénom :</b><br>
<input type="text" name="fprenom" size="40"></p>
<p><b>Courriel *:</b><br>
<input type="text" name="fcourriel" size="40"></p>
<p><b>Arrivée *:</b><br>
<select size="1" name="farriveej">
<option>01</option>
<option>02</option>
<option>03</option>
<option>04</option>
<option>05</option>
<option>06</option>
<option>07</option>
<option>08</option>
<option>09</option>
<option>10</option>
<option>11</option>
<option>12</option>
<option>13</option>
<option>14</option>
<option>15</option>
<option>16</option>
<option>17</option>
<option>18</option>
<option>19</option>
<option>20</option>
<option>21</option>
<option>22</option>
<option>23</option>
<option>24</option>
<option>25</option>
<option>26</option>
<option>27</option>
<option>28</option>
<option>29</option>
<option>30</option>
<option>31</option>
</select>
<select size="1" name="farriveem">
<option>janvier</option>
<option>février</option>
<option>mars</option>
<option>avril</option>
<option>mai</option>
<option>juin</option>
<option>juillet</option>
<option>août</option>
<option>septembre</option>
<option>octobre</option>
<option>novembre</option>
<option>décembre</option>
</select>
<select size="1" name="farriveea">
<option>2004</option>

</select><br>
</p>
<p><b>Départ *:</b><br>
<select size="1" name="fdepartj">
<option>01</option>
<option>02</option>
<option>03</option>
<option>04</option>
<option>05</option>
<option>06</option>
<option>07</option>
<option>08</option>
<option>09</option>
<option>10</option>
<option>11</option>
<option>12</option>
<option>13</option>
<option>14</option>
<option>15</option>
<option>16</option>
<option>17</option>
<option>18</option>
<option>19</option>
<option>20</option>
<option>21</option>
<option>22</option>
<option>23</option>
<option>24</option>
<option>25</option>
<option>26</option>
<option>27</option>
<option>28</option>
<option>29</option>
<option>30</option>
<option>31</option>
</select>
<select size="1" name="fdepartm">
<option>janvier</option>
<option>février</option>
<option>mars</option>
<option>avril</option>
<option>mai</option>
<option>juin</option>
<option>juillet</option>
<option>août</option>
<option>septembre</option>
<option>octobre</option>
<option>novembre</option>
<option>décembre</option>
</select>
<select size="1" name="fdeparta">
<option>2004</option>
</select><br>
</p>
<p><br>
<i>* Informations nécessaires</i>
</p>
<p><input type="submit" value="Suivant" name="BTOK"> (étape 1 sur 4)</p>
</form>
<p> </p>
<p> </p>

</body>


</html>
A voir également:

2 réponses

firejoke Messages postés 20 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 22 avril 2005 12
1 juil. 2004 à 13:15
Il faut que tu cree un tableau dans lequel tu va mettre
tout tes mois. Ensuite tu fais une boucle pour l'affichage.
de ce style :

<select name="dateDebutMois" class="Texte">
<%
for (int i=0; i<textesMois.length; i++) {
%>
<option value="<%= i %>" <%if(Integer.toString(i).equals(dateDebutMois)){%> selected <%}%> ><%= textesMois[i]%>
<%
} // for mois
%>
</select>

enfin en lorsque l'on submit ton formulaire tu dois effectuer un
controle sur le mois selectionné et le cas éechant faire un retour
sur ta page web avec un message d'erreur du style :
" La date n'est pas au bon format veuillez la saisir a nouveau".
Pour ce qui est du controle je te laisse chercher un peu
@+ Mr Jo
0
Utilisateur anonyme
1 juil. 2004 à 13:41
Allez Hop!!
function dateValide(dateJ, dateM, dateA, texte){
        if((dateJ.value == 'nc') || (dateM.value == 'nc') || (dateA.value == 'nc')){
                // On est dans le cas ou on ne veut pas mettre de date
                var confirmation = confirm("Votre date "+texte+" n'etant pas remplie totalement,\nelle ne sera donc pas enregistrée.\nContinuer?");
                if(confirmation){
                        return true;
                }else{
                        return false;
                }
        }else{
                // Ici, tous les champs de la date sont remplis, on vérifie sa validité.
                if((dateA.value<1900) || (dateA.value>2100) || isNaN(dateA.value)){
                        alert("L'année "+texte+" indiquée n'est pas valide.");
                        return false;
                }else{
                        // Vérification de l'existence de la date (30 février...)
                        // De toute facon, Janvier (01), Mars (03), Mai (05), Juillet (07), Août (08), Octobre (10) et Décembre(12)
                        // sont valides (31 jours cahque année).
                        if((dateM.value == 1) || (dateM.value == 3) || (dateM.value == 5) ||
                        (dateM.value == 7) || (dateM.value == 8) || (dateM.value == 10) ||
                        (dateM.value == 12)){
                                return true;
                        }
                        // On vérifie Avril (04), Juin (06), Septembre (09) et Novembre (11) qui ont toujours 30 jours
                        if((dateM.value == 4) || (dateM.value == 6) || (dateM.value == 9) || 
                        (dateM.value == 11)){
                                if(dateJ.value > 30){
                                        alert("La date "+texte+" indiquée n'est pas valide : ce mois ne compte pas 31 jours.");
                                        return false;
                                }else{
                                        return true;
                                }
                        }

                        // Année bissextile (donc a un 29 février) si multiple de 4 et pas de 100, ou de 400
                        if((((dateA.value % 4) == 0) && !((dateA.value % 100) == 0)) || ((dateA.value % 400) == 0)){
                                // L'année indiquée est bissextile
                                if((dateM.value == 2) && (dateJ.value > 29)){
                                        alert("La date "+texte+" indiquée n'est pas valide : Février "+dateA.value+" compte 29 jours.");
                                        return false;
                                }else{
                                        return true;
                                }
                        }else{
                                // L'année indiquée n'est pas bissextile
                                if((dateM.value == 2) && (dateJ.value > 28)){
                                        alert("La date "+texte+" indiquée n'est pas valide : Février "+dateA.value+" compte 28 jours.");
                                        return false;
                                }else{
                                        return true;
                                }
                        }
                }
        }
        return false;
}


Y'a des options inutiles, mais à toi d'adapter.
Et n'oublie pas de mettre <option value=1>Janvier</option> et ainsi de suite.
A+

Fat_cartman,
Ass-Kicked by ASP
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 521
31 mars 2007 à 16:37
Salut a tous,
Excusez moi pour l'incrust mais je ne sais plus comment faire.
fat_cartman: J'ai un script javascript qui controle quelques champs d'un formulaire dont 2 sont des listes déroulante. Sous Firefox: IMPECT. Mais sous IE6 ça foire, ça ne reconnait pas la valeur choisie (il me redemande a chaque fois de choisir une option.
Tu a l'air de maitriser très bien le javascript alors voici le script (si tu pouvais y jeter un oeil...) ce serait super cool !
<!-- Vérification des champs obligatoires du formulaire
function verif() 
{ 
	var nom = document.formulaire.groupe.value;
	if (document.formulaire.groupe.value == "")
	{
		alert ('Veuillez entrer le groupe');
		document.formulaire.groupe.focus();
		return false;
	}
	if(document.formulaire.categorie.value == "")
	{
		alert ('Veuillez entrer la catégorie du logiciel');
		document.formulaire.categorie.focus();
		return false;
	}
	if(document.formulaire.nom.value == "")
	{
		alert ('Veuillez entrer le nom du logiciel');
		document.formulaire.nom.focus();
		return false;
	}
	if(document.formulaire.reference_DSI.value == "")
	{
		alert ('Veuillez entrer la référence DSI');
		document.formulaire.reference_DSI.focus();
		return false;
	}
	if(document.formulaire.reference_DSI.value.length != 3)
	{ 
		alert ('La référence doit comporter trois caractères'); 
		document.formulaire.reference_DSI.focus();
		return false; 
	}
	else {return true;}
}
//-->

voir ici: http://txiki.free.fr
login: tintin
pass: tinotibet
Mais c'est a tester avec IE bien sur !
PRESICIONS ! ça fonctionne pour les champs normaux (type text mais pas les listes.

Un grand merci d'avance.
0