Aller au contenu

silvain59

Membre
  • Compteur de contenus

    4
  • Inscrit(e) le

  • Dernière visite

Réputation sur la communauté

0 Neutre
  1. j'ai essayé et je pense que tout simplement il te faut utiliser des { }: onblur="if(doverif_valid_date(this.value)) {alert('ok');} else {alert('pas ok');}" dis moi si ca marche silvain
  2. Oui cette fonction ne fait que vérifier. Je te redis vite fait le principe pour que tu t'en rendes compte: Javascript corrige automatiquement des dates incorrects et renvoie une valeur qui lui parait correcte. Ainsi si tu tape 0 janvier 2001 comme date, soit si tu es sous IE il te retourne 31 decembre 2000, soit si tu es sous Netscape 2 janvier 2001. D'ou le 1er pb, si tes utilisateurs ont des navigateurs différents (ce qui est fort probable) la correction automatique ne sera pas la meme ! Et puis le 2e pb (nettement plus genant) si l'utilisateur tape une date au format completement merdique: sans le mois ou avec des lettres... comment veux-tu que la fonction puisse te corriger ca en une date cohérente proche de celle que l'utilisateur aura voulu rentrer ?!!! L'ère de l'IA approche mais tout de meme silvain
  3. géniale l'idée !!!! Mais juste une petite rectification de tordu !!! Ca vérifie bien si le jour,mois, année sont des entiers avec isNaN donc exclu les cas ou un caractère autre qu'un chiffre est entré. Mais il y a une petite correction à rajouter: Si pour le jour,le mois ou l'année on rentre un "." à la fin comme 2./5./200. aucune erreur n'est renvoyée !! Car le parseInt renvoie pour le jour "2" qui est bien un nombre... Donc il faut faire un petit test pour etre sur qu'il n'y a pas un "." a la fin du jour, du mois et de l'année voici le test complet que j'utilise: if ((ladate.length != 3) || isNaN(ladate[0]) || isNaN(ladate[1]) || isNaN(ladate[2]) || eval(ladate[0])<0 || eval(ladate[1])<0 || eval(ladate[2])<0 || parseInt(ladate[0])!=parseFloat(ladate[0]) || parseInt(ladate[1])!=parseFloat(ladate[1]) || parseInt(ladate[2])!=parseFloat(ladate[2]) || ladate[0].substr(ladate[0].length-1,1)=="." || ladate[1].substr(ladate[1].length-1,1)=="." || ladate[2].substr(ladate[2].length-1,1)==".") return false explications: il faut naturellement tester que les entrées soit positives car isNaN(-1) renvoie true (c'est bel est bien un nombre un relatif !) ensuite il faut tester que parseInt soit egal a parseFloat car exemple: parseInt(.5) = 5 parseFloat(.5) = 0.5 on elimine donc par ce test le cas ou l'utilisateur rentre un floatant comme année par exemple le test du "." a la fin est toujours necessaire car parseInt(5.) = 5 parseFloat(5.) = 5 voila c'est un peu compliqué mais c'est histoire d'avoir une liste exhaustive des differentes eventualités et histoire d'etre sur que la date est CORRECTE a 100% !! mais ca n'enleve rien a ton génie ! silvain
×
×
  • Créer...