Votre question

Programmation Javascript

Tags :
  • format
  • Programmation
Dernière réponse : dans Programmation
28 Mai 2010 08:55:08

Bonjour à tous, premièrement, je voulais savoir si ce bout de code pour une vérification de date était correct

  1. // ********************************************
  2. // FONCTION validedate()
  3. // ********************************************
  4. function validedate(sdate,mini,maxi)
  5. {
  6. // sdate est une variable de type string
  7. // mini,maxi détermine un intervalle d'années
  8. // Format valide:jj/mm/aaaa
  9.  
  10. // Déclaration et initialisation des variables
  11. var caract;
  12. var cpt=0;
  13. var aDate;
  14. var jour, mois, annee;
  15. var chiffres = "0123456789";
  16. var nbjours = new Array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
  17.  
  18. // Contrôle que la date n'est pas vide
  19. if (sdate.length == 0)
  20. return false;
  21.  
  22. // Contrôle du nombre de caractères de la date
  23. if (sdate.length < 8 || sdate.length > 10)
  24. return false;
  25.  
  26. // Contrôle de la position des / en 2 et 5
  27. if (sdate.substring(2,3) != "/" || sdate.substring(5,6) != "/")
  28. return false;
  29.  
  30. // Contrôle des caractères de la date parmi "0123456789"
  31. for (cpt=0; cpt<sdate.length; cpt++)
  32. {
  33. caract = sdate.substring(cpt, cpt+1);
  34. if (chiffres.indexOf(caract) == "-1" && cpt != 2 && cpt != 5)
  35. return false;
  36. }
  37.  
  38. //Découpage de la date à chaque /
  39. aDate = sdate.split("/");
  40. jour = aDate[0];
  41. mois = aDate[1];
  42. annee = aDate[2];
  43.  
  44. // Exclure les dates hors cadre
  45. if (jour < 1 || jour > 31 || mois < 1 || mois > 12 || annee < mini || annee > maxi)
  46. return false;
  47. else
  48. {
  49. // Cas des mois de février
  50. if (mois == 2 && jour == 29)
  51. {
  52. if ((annee % 400 != 0) && !(annee % 4 == 0 && annee % 100 != 0))
  53. return false;
  54. }
  55. else if (jour > nbjours[parseInt(mois)])
  56. return false;
  57. }
  58. }


ci-dessus, fichier validate.js

ci-dessous code javascript dans ma balise head pour ma vérification

  1. var datejour = new Date();
  2. var annee=""+datejour.getYear();
  3. annee="20"+annee.substring(annee,1,2);
  4. if(validedate(document.getElementById('idnaiss').value,1940 ,annee) == false)
  5. {
  6. alert("Veuillez entrer une date de naissance valide.");
  7. document.getElementById('idnaiss').focus();
  8. return false;
  9. }


Il a l'air de fonctionner seulement, peut-être que certaines dates ne fonctionneraient pas, voilà :/ .

Puis secondement, j'aimerais un peu d'aide pour un autre bout de code javascript, je voudrais lors de la saisie de la

date de naissance sur mon formulaire, que seul la liste des années soit visible en premier, puis lors de la sélection

d'une année, on affiche le mois, puis on affiche la liste des jours (suivant année bissextile, et mois sélectionné).

Voilà j'espère que j'aurais été assez clair, merci à tous pour vos prochaines réponses et bonne journée :) .

Autres pages sur : programmation javascript

a c 232 L Programmation
28 Mai 2010 13:27:12

Salut,

Il semblerait qu'il y soit fonctionnel.

Pour ton code, tu n'as pas besoin d'afficher le mois seulement après avoir eu l'année, vu que les mois ne changent pas, il n'y a que le nombre de jours en février qui peut changer.

Tu créés ton <select> pour les années (ou un <input type="textbox">) et un <select> pour les mois. Tu les remplis tous les 2 avec les années / mois.
Pour faire plus simple pour les années, tu peux faire une boucle qui va ajouter les années automatiquement entre deux dates.
Et pour les jours, tu créés un tableau javascript qui contient le nombre de jours dans chaque mois (comme le nbjours qui est dans ta fonction validate), et tu récupèreras alors le nombre de jours dans le mois pour un numéro de mois donné.
Exemple, nbjours[4] = 30 (30 jours en avril)
Et tu te fais une boucle de 1 à nbjours[num_mois] pour ajouter une option pour le jour.

Edit: et c'est avec l'évènement onchange de ton <select> des mois que tu effectues le travail.
m
0
l
28 Mai 2010 14:31:34

Mais, est-ce possible que cela se fasse directement en html ?

Enfin (pas très explicite que je suis) je voudrais genre avec donc en premier la liste des jours et des mois, une fois que

j'ai sélectionné le mois, la liste se crée directe, avec le nb de jours qu'il y a selon le mois (et l'année si bissextile ), si cela

peut marcher avec les tableaux comme ça, ce serait plus bien je récupèrerait directement le nombre pour le mettre en

paramètre de nbjours pour m'en servir dans la boucle, seulement là je suis un peu perdu, et surtout endormi o_o.

Je sais qu'il est possible de cacher un élément, seulement je ne sais pas du tout comment faire, étant donné que je ne

fais pas vraiment de javascript, mais est-ce possible donc de cacher la liste, et une fois que tout est sélectionné, la liste

s'affiche avec les paramètres voulu qui pourraient être explicité dans une fonction javascript ?
m
0
l
a c 232 L Programmation
28 Mai 2010 19:08:08

Tu auras besoin d'un peu de javascript oui pour générer le HTML en fonction des éléments sélectionnés.
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS