Afficher le nombre de jour d'un mois en fonction du mois selectionne

Signaler
Messages postés
279
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
6 août 2007
-
Messages postés
1
Date d'inscription
samedi 16 octobre 2004
Statut
Membre
Dernière intervention
25 mai 2007
-
Bonjour tout le monde,



alors voila mon probleme:

j'ai 2 select, un contenant les mois numerotés de 01 à 12, et un autre
contenant les jours numérotés de 01 à 31. Sauf que j'aimerai que quand
on selectionne un mois, ca m'affiche le nombre de jours dans l'autre
select et tout ca en instantané, sans le faire passer en parametre.

Par exemple, si je choisis le mois 03, je vais avoir dans mon select
jour, les 31 possibles, mais si je pend 04, il m 'en faudrait que 30.



J'espere que c'est assez clair, et si possible aidez moi, j'en ai absolument besoin !!!!!



Merci d'avance

5 réponses

Messages postés
289
Date d'inscription
vendredi 11 mars 2005
Statut
Membre
Dernière intervention
3 avril 2008
3
Salut!

Le script ne peut pas être éfficace sans l'apport de l'année qui détermine si le mois de février est bissextile ou pas. J'imagine que l'année est aussi saisie pas l'internaute ;-)

Un exemple :


<html>
<head>
<title>Untitled</title>
<script type= "text/javascript">
function loadMois()
{
annee = "2005"; // ou document.form.annee.value;
mois = document.form.mois.value;
target = new Date(annee, mois, 0);
nbJour = target.getDate();
jours = document.form.jour;
for (i=1;i<=31;i++)
{
j = document.createElement("OPTION");
j.text = i;
j.value = i;
if (nbJour>=i)
jours.options[i-1] = j;
else
jours.length = nbJour;
}
}

</script>
</head>

<form name ="form">
<select name="mois" onchange="loadMois()">
<option value="1">Janvier</option>
<option value="2">Février</option>
<option value="3">Mars</option>
<option value="4">Avril</option>
<option value="5">Mai</option>
<option value="6">Juin</option>
<option value="7">Juillet</option>
<option value="8">Août</option>
<option value="9">Septembre</option>
<option value="10">Octobre</option>
<option value="11">Novembre</option>
<option value="12">Décembre</option>
</select>
<select name="jour">
</select>
</form>

</html>

A+, Ghislain
Messages postés
279
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
6 août 2007

ouai c'est niquel, mais j 'arrive pas à récupérer l'année.

J'ai juste rajouté un select portant le nom annee mai ca marche pas:



<html>
<head>
<title>Untitled</title>
<script type= "text/javascript">
function loadMois()
{
annee = "2005"; // ou document.form.annee.value;
mois = document.form.mois.value;
target = new Date(annee, mois, 0);
nbJour = target.getDate();
jours = document.form.jour;
for (i=1;i<=31;i++)
{
j = document.createElement("OPTION");
j.text = i;
j.value = i;
if (nbJour>=i)
jours.options[i-1] = j;
else
jours.length = nbJour;
}
}

</script>
</head>

<form name ="form">

<select name="annee">

</select>
<select name="mois" onchange="loadMois()">
<option value="1">Janvier</option>
<option value="2">Février</option>
<option value="3">Mars</option>
<option value="4">Avril</option>
<option value="5">Mai</option>
<option value="6">Juin</option>
<option value="7">Juillet</option>
<option value="8">Août</option>
<option value="9">Septembre</option>
<option value="10">Octobre</option>
<option value="11">Novembre</option>
<option value="12">Décembre</option>
</select>
<select name="jour">
</select>
</form>

</html>
Messages postés
289
Date d'inscription
vendredi 11 mars 2005
Statut
Membre
Dernière intervention
3 avril 2008
3
Salut!

Le problème c'est tu ne mettait rien dans ton select annee???

Par exemple :


<html>
<head>
<title>Untitled</title>
<script type= "text/javascript">
function loadAnnee()
{
Annee = document.form.annee;
an = new Date().getFullYear();
an_depart = an;
an_fin = an + 10;
for (i=an_depart, n=0;i<=an_fin;i++,n++)
{
j = document.createElement("OPTION");
j.text = i;
j.value = i;
Annee.options[n] = j;
}

}
function loadMois()
{
annee = document.form.annee.value;
mois = document.form.mois.value;
target = new Date(annee, mois, 0);
nbJour = target.getDate();
jours = document.form.jour;
for (i=1;i<=31;i++)
{
j = document.createElement("OPTION");
j.text = i;
j.value = i;
if (nbJour>=i)
jours.options[i-1] = j;
else
jours.length = nbJour;
}
}

</script>
</head>

<form name ="form">
<select name="annee" onchange="loadMois()">
</select>
<select name="mois" onchange="loadMois()">
<option value="1">Janvier</option>
<option value="2">Février</option>
<option value="3">Mars</option>
<option value="4">Avril</option>
<option value="5">Mai</option>
<option value="6">Juin</option>
<option value="7">Juillet</option>
<option value="8">Août</option>
<option value="9">Septembre</option>
<option value="10">Octobre</option>
<option value="11">Novembre</option>
<option value="12">Décembre</option>
</select>
<select name="jour">
</select>
</form>

</html>

Dans la fonction loadAnnee, la variable an contient l'année courante alors tu n'as qu'a affectée la variable an_depart et an_fin pour qu'elle représente bien les années que tu veux avoir dans le select année.

A+, Ghislain
Messages postés
279
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
6 août 2007

OK.



Merci beaucoup ca marche!!!
Messages postés
1
Date d'inscription
samedi 16 octobre 2004
Statut
Membre
Dernière intervention
25 mai 2007

j'ai rajouter juste une modif pour garder le jour et le mois selectionné lors de l'update :

<html>
<head>
<title>Untitled</title>
<script type="text/javascript">
  function loadAnnee(){
    Annee = document.form.annee;
    an = new Date().getFullYear();
    an_depart = 2007;
    an_fin = an;
    for (i=an_depart, n=0;i<=an_fin;i++,n++){
      j = document.createElement("OPTION");
      j.text = i;
      j.value = i;
      if(Annee == i){
        j.setAttribute("selected", "selected");
      }
      Annee.options[n] = j;
    }
  }
 
  function loadMois(){
    annee = document.form.annee.value;
    mois = document.form.mois.value;
    day = document.form.jour.value;
    target = new Date(annee, mois, 0);
    nbJour = target.getDate();
    jours = document.form.jour;
    for (i=1;i<=31;i++){
      j = document.createElement("OPTION");
      j.text = i;
      j.value = i;
      if(day == i){
        j.setAttribute("selected", "selected");
      }
      if (nbJour>=i)
        jours.options[i-1] = j;
      else
        jours.length = nbJour;
    }
  }
 
  function init(){
    loadAnnee();
    loadMois() ;
    //loadDay();
  }

</script>
</head>

<form name="form">

<select name="jour">
</select>

<select name="mois" onchange="loadMois()">
<option value="1">Janvier</option>
<option value="2">Février</option>
<option value="3">Mars</option>
<option value="4">Avril</option>
<option value="5">Mai</option>
<option value="6">Juin</option>
<option value="7">Juillet</option>
<option value="8">Août</option>
<option value="9">Septembre</option>
<option value="10">Octobre</option>
<option value="11">Novembre</option>
<option value="12">Décembre</option>
</select>

<select name="annee" onchange="loadMois()">
</select>

</form>

</html>

LIVE