Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/02/2011, 11h42   #1
Membre habitué
 
Inscription : octobre 2006
Messages : 325
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 325
Points : 137
Points : 137
Par défaut Debutant en JS cherche a faire une fonction sur les date

Bonjours tout le monde

Voila mon petit problème, désolé je début en JS je par de zéro, je suis entrain de créé ma 1ere fonction


voila j'ai un formulaire tout simple avec 2 champs de texte pour saisir des date
Date Début et Date Fin

je voudrai (sans recharger ma page) que la date de fin se remplisse toute seul en fonction de la date de début.

Par exemple si je rempli dans date début : 01-01-2010, dans date fin je voudrais 31-12-2010

Mais la date de début peut etre n'importe quel date
Par exemple
date debut = 25-06-2010 et donc date fin = 24-06-2011

avec mon petit code, j'arrive a ajouter a l'année, au mois ou au jour le nombre que je veux mais tout se complique quand on commence a prendre en compte les années bissextile

Quelqu'un a déjà rencontrer se probleme?? on sens sort comment??

merci de votre aide
teen6517 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 11h50   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
Code :
tadate.setFullYear(tadate.getFullYear)+1)
là les années bissextiles sont prises en compte
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 11h57   #3
Membre habitué
 
Inscription : octobre 2006
Messages : 325
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 325
Points : 137
Points : 137
Je teste ça de suite.
teen6517 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 14h24   #4
Membre habitué
 
Inscription : octobre 2006
Messages : 325
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 325
Points : 137
Points : 137
SpaceFrog merci pour ta réponce rapide mais il ne se passe rien

je me suis peut etre tromper voici mon code

Code :
1
2
3
4
5
6
7
8
<script type="text/javascript">
  function sumDateTest(){
    window.alert('This is a test.');
    var date_debut = document.getElementById('P712_ABO_DEBUT_DT').value;
	var date_fin = date_debut.setFullYear(date_debut.getFullYear)+1);
	document.getElementById('P712_ABO_FIN_DT').value = date_fin;
  }
</script>
meme le window.alert ne s'affiche pas alors que avant oui

pour déclancher l'appel de la fonction j'utilise :
Code :
1
2
 
onfocus="sumDateTest()"
sur dans mon champ de texte de date fin.

une petite idée ou piste pour m'orienter dans mes recherche??
teen6517 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 14h31   #5
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
forcément en entrée tu as un string.. pas une date ...

Code :
var date_debut = document.getElementById('P712_ABO_DEBUT_DT').value;
il te faudra d'abord convertir ton string en date avant de vouloir l'utiliser comme une date
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 14h51   #6
Membre habitué
 
Inscription : octobre 2006
Messages : 325
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 325
Points : 137
Points : 137
C'est bisarre que tu me dise que se soit un string car dans mon formulaire, cette zone de texte est remplie grâce à un sélecteur de date (un petit calendrier a droite du rectangle où s'affiche la date) et il a pour format DD-MM-YYYY

comment on convertie cette chaine en date??

j'ai tenté

Code :
1
2
3
4
5
6
7
8
9
10
 
<script type="text/javascript">
  function sumDateTest(){
    window.alert('This is a test.');
    var date_debut = document.getElementById('P712_ABO_DEBUT_DT').value;
	var date_test = parseDate(date_debut, "n/j/y");
	var date_fin = date_test.setFullYear(date_test.getFullYear)+1);
	document.getElementById('P712_ABO_FIN_DT').value = date_fin;
  }
</script>
Mais sa n'affiche toujours rien, j'ai des doute sur l'utilisation du parseDate ...
(ma sourde : http://www.xaprb.com/articles/javasc...sing-demo.html)
teen6517 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 15h05   #7
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
Code :
1
2
3
4
5
6
7
8
var tadate="02-01-2010"
var date_debut = tadate //document.getElementById('P712_ABO_DEBUT_DT').value;
var tabdate=date_debut.split('-')
var date_test = new Date(tabdate[2],tabdate[1],tabdate[0]);
alert(date_test.toLocaleString())
var date_fin = new Date(date_test)
date_fin.setFullYear( date_test.getFullYear()+1);
alert(date_fin.toLocaleString())
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 15h34   #8
Membre habitué
 
Inscription : octobre 2006
Messages : 325
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 325
Points : 137
Points : 137
spacefrog merci pour tes réponses rapides

J'avais trouvais un bout de code sur le forum que tu avais poster

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
<script type='text/javascript'>
	function sumDateTest(){
		window.alert('This is a test.');
		var date_debut = document.getElementById('P712_ABO_DEBUT_DT').value;
		var maDate=new Date();
		var TabDate = date_debut.split('-');
 
		maDate.setDate(TabDate[0]);
		maDate.setMonth(TabDate[1]);
		maDate.setYear(TabDate[2]);
 
		var date_fin = maDate.setFullYear(maDate.getFullYear)+1);
		document.getElementById('P712_ABO_FIN_DT').value = date_fin;
    }
</script>
doit surement y avoir une petite erreur vue que sa marche pas ^^

J'ai testé avec le dernier codes que tu ma donner :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
<script type='text/javascript'>
	function sumDateTest(){
		var tadate="02-01-2010"
		var date_debut = document.getElementById('P712_ABO_DEBUT_DT').value;
		var tabdate=date_debut.split('-')
		var date_test = new Date(tabdate[2],tabdate[1],tabdate[0]);
		alert(date_test.toLocaleString())
		var date_fin = new Date(date_test)
		date_fin.setFullYear( date_test.getFullYear()+1);
		document.getElementById('P712_ABO_FIN_DT').value = date_fin;
		alert(date_fin.toLocaleString())
    }
</script>
avec petite modif pour que l'affichage se face dans mon formulaire et dans les alerts.

Mais il y a 2 problèmes,
le premier est que dans la date saisie j'ai 22-01-2011 et dans le message d'alert il affiche 22 février 2011 (alors que dans le mois on n'a fait aucune modification il me s'emble )
le 2eme problème c'est que cette fonction ne répond absolument pas a mes attentes

si ma date de debut est 01-01-2010, ma date de fin doit être 31-12-2010 et non 01-01-2011
teen6517 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 15h58   #9
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
ha oui mois+1 le smois en js commencent à 0
janvier =0 =>

Code :
var date_test = new Date(tabdate[2],tabdate[1]+1,tabdate[0]);
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 17h35   #10
Membre habitué
 
Inscription : octobre 2006
Messages : 325
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 325
Points : 137
Points : 137
ok merci je comprend mieux ^^

bon je tente un algorithme et je vous tien au courant merci pour ton aide
teen6517 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 16h12   #11
Membre habitué
 
Inscription : octobre 2006
Messages : 325
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 325
Points : 137
Points : 137
Voici mon algo fait maison ...
Il y a surement mieux mais il marche


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
 
<script type="text/javascript">
	function sumDateTest()
	{
		var date_debut = document.getElementById('P712_ABO_DEBUT_DT').value;
		var tabdate = date_debut.split('-');
		var operation;
		var annee_int;
		var mois_int;
		var jour_int;
		var mod_bissextile;
		if (tabdate[1] == 01)
		{
			if (tabdate[0] == 01)
			{
				tabdate[2] = tabdate[2];
				tabdate[1] = 12;
				tabdate[0] = 31;
			}
			else
			{
				annee_int = parseInt(tabdate[2]);
				operation = 1;
				annee_int += operation;
                tabdate[2] = annee_int;
 
				tabdate[1] = 01;
 
				jour_int = parseInt(tabdate[0]);
				operation = 1;
				jour_int -= operation;
                tabdate[0] = jour_int;
			}
		}
		else if ((tabdate[1] == 05) || (tabdate[1] == 07) || (tabdate[1] == 08) || (tabdate[1] == 10) || (tabdate[1] == 12)) 
		{
			if (tabdate[0] == 01)
			{
				annee_int = parseInt(tabdate[2]);
				operation = 1;
				annee_int += operation;
                tabdate[2] = annee_int;
 
				mois_int = parseInt(tabdate[1]);
				operation = 1;
				mois_int -= operation;
                tabdate[1] = mois_int;
 
				jour_int = parseInt(tabdate[0]);
				operation = 29;
				jour_int += operation;
                tabdate[0] = jour_int;
			}
			else
			{
				annee_int = parseInt(tabdate[2]);
				operation = 1;
				annee_int += operation;
                tabdate[2] = annee_int;
 
				tabdate[1] = tabdate[1];
 
				jour_int = parseInt(tabdate[0]);
				operation = 1;
				jour_int -= operation;
                tabdate[0] = jour_int;
			}
		}
		else if ((tabdate[1] == 02) || (tabdate[1] == 04) || (tabdate[1] == 06) || (tabdate[1] == 09) || (tabdate[1] == 11))
		{
			if (tabdate[0] == 01)
			{
				annee_int = parseInt(tabdate[2]);
				operation = 1;
				annee_int += operation;
                tabdate[2] = annee_int;
 
				mois_int = parseInt(tabdate[1]);
				operation = 1;
				mois_int -= operation;
                tabdate[1] = mois_int;
 
				jour_int = parseInt(tabdate[0]);
				operation = 30;
				jour_int += operation;
                tabdate[0] = jour_int;
			}
			else
			{
				annee_int = parseInt(tabdate[2]);
				operation = 1;
				annee_int += operation;
                tabdate[2] = annee_int;
 
				tabdate[1] = tabdate[1];
 
				jour_int = parseInt(tabdate[0]);
				operation = 1;
				jour_int -= operation;
                tabdate[0] = jour_int;
			}
		}
		else if (tabdate[1] == 03)
		{
			if (tabdate[0] == 01)
			{
				mod_bissextile = tabdate[2];
				mod_bissextile %= 4;
				if (mod_bissextile == 0)
				{
					annee_int = parseInt(tabdate[2]);
					operation = 1;
					annee_int += operation;
					tabdate[2] = annee_int;
 
					tabdate[1] = 02;
 
					tabdate[0] = 29;
				}
				else
				{
					annee_int = parseInt(tabdate[2]);
					operation = 1;
					annee_int += operation;
					tabdate[2] = annee_int;
 
					tabdate[1] = 02;
 
					tabdate[0] = 28;
				}
			}
			else
			{
				annee_int = parseInt(tabdate[2]);
				operation = 1;
				annee_int += operation;
                tabdate[2] = annee_int;
 
				tabdate[1] = tabdate[1];
 
				jour_int = parseInt(tabdate[0]);
				operation = 1;
				jour_int -= operation;
                tabdate[0] = jour_int;
			}
		}
		var date_fin = tabdate[0] + "-" + tabdate[1] + "-" + tabdate[2];
		document.getElementById('P712_ABO_FIN_DT').value = date_fin;
	}
</script>
teen6517 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 16h13   #12
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
pourquoi tu ne laisse pas js gérer les années bissextiles au lieu de faire tout un tas de tests ????
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 16h51   #13
Membre habitué
 
Inscription : octobre 2006
Messages : 325
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 325
Points : 137
Points : 137
pasque avec les piste que tu m'a donner j'ai pas réussi a avoir le résultat voulue et c'est la seul façon de faire que j'ai trouvé

Si tu a une solution explicite je suis preneur

Mais au moin on peut pas dire que j'ai pas chercher ....
teen6517 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 16h55   #14
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 805
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 805
Points : 35 810
Points : 35 810
Adapte la solution proposée sur ce post : la date 6 mois avant la date du jour
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2011, 17h18   #15
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
<script type="text/javascript">
function plusoneyear(){
 
var date_debut = document.getElementById('indate').value;
var tabdate=date_debut.split('-')
var date_test = new Date(tabdate[2],tabdate[1]-1,tabdate[0])
 
var date_fin = new Date(date_test.getFullYear()+1,date_test.getMonth(),date_test.getDate()+1)
 
document.getElementById('outdate').value= date_fin.getDate().toString().replace(/^(\d)$/,'0$1') + "-"+(date_fin.getMonth()+1).toString().replace(/^(\d)$/,'0$1')+"-"+date_fin.getFullYear()
 
 
}
</script>
 
 
</head>
 
<body>
<input type="text" id="indate" value="" />
<input type="text" id="outdate"  value="" readonly/>
<input type="button" value="go" onclick="plusoneyear()" />
 
</body>
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 10h25   #16
Membre habitué
 
Inscription : octobre 2006
Messages : 325
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 325
Points : 137
Points : 137
Merci bovino mais ton code a l'aire assez dur a adapter

Je vais tenter ma chance avec celui de SpaceFrog qui a l'aire bien plus facile à adapter

Encore un grand merci
teen6517 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h50.


 
 
 
 
Partenaires

Hébergement Web