Script de calcul âge

Eléphanteau du PHP | 24 Messages

18 oct. 2016, 18:23

Bonsoir, j'ai un script de calcul de l'âge, on rentre ça date dans le champs text et l'âge apparaît dans le champs grisé, à côté.

Le problème c'est que rien ne se passe ...

Code : Tout sélectionner

<html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"> </script> </script> <title>Calcul de l'�ge</title> <script language="JavaScript"> (function($){ $('#age').on('change', function() { var date = $(this).value(); var ok = CheckDate(date); if (ok == 1) { var age = tjs_age(date); $('#age').value(age); } }) })(jQuery); function CheckDate(d) { var amin=1850; var amax=2500; var separateur="/"; var j=(d.substring(0,2)); var m=(d.substring(3,5)); var a=(d.substring(6)); var ok=1; if ( ((isNaN(j))||(j<1)||(j>31)) && (ok==1) ) { alert("Le jour n'est pas correct."); ok=0; } if ( ((isNaN(m))||(m<1)||(m>12)) && (ok==1) ) { alert("Le mois n'est pas correct."); ok=0; } if ( ((isNaN(a))||(a<amin)||(a>amax)) && (ok==1) ) { alert("L'ann�e n'est pas correcte."); ok=0; } if ( ((d.substring(2,3)!=separateur)||(d.substring(5,6)!=separateur)) && (ok==1) ) { alert("Les s�parateurs doivent �tre des "+separateur); ok=0; } if (ok==1) { var d2=new Date(a,m-1,j); j2=d2.getDate(); m2=d2.getMonth()+1; a2=d2.getYear(); if (a2<=100) {a2=1900+a2} if ( (j!=j2)||(m!=m2)||(a!=a2) ) { alert("La date "+d+" n'existe pas !"); ok=0; } ok=d2; } return ok; } function tjs_age(dt) { var d=CheckDate(dt) var m=new Date() var age=""; var age_a=0;var age_m=0; if (d!=0) { if (d.getTime()>m.getTime()) { age="La date de naissance est sup�rieure � la date du jour !"; document.formage.dt_naissance.focus(); } age_a = m.getFullYear()-d.getFullYear(); m.setYear(d.getYear()); if ((d.getTime()>m.getTime())&&(d.getMonth()-m.getMonth()!=0)) {age_a--;} if (d.getMonth() >= m.getMonth()) { age_m = 12 - (d.getMonth()-m.getMonth()) } else { age_m = (m.getMonth()-d.getMonth()) } if (age_m==12) {age_m=0;} if (age_a==1) { age=age_a+" an"} if (age_a>1) { age=age_a+" ans"} if ((age_a>0)&&(age_m>0)) {age+=" et "} if (age_m>0) {age+=age_m+" mois"} if (age=="") { age="moins de 1 mois"} } else { document.formage.dt_naissance.focus(); } return age; } </script> </head> <body> <font face="Arial" size='-1' color="#000099"> <center><b>Calcul de l'�ge</b></center> <br> <form name="formage"> Entrez votre date de naissance (JJ/MM/AAAA) : <INPUT type="text" id="date" name="dt_naissance" size=10 maxlength=10 /> <input type="text" disabled id="age" size="5" /> </form> </body></html>

Mammouth du PHP | 2703 Messages

18 oct. 2016, 19:04

$('#age').on('change', function() {

<input type="text" disabled id="age" size="5" />

cela va être difficile de changer l'age si la possibilité de modification du champ age est désactivée.
c'est le champ date que l'on modifie.

Eléphanteau du PHP | 24 Messages

18 oct. 2016, 19:18

Bonsoir et merci de ta réponse, je viens d'enlever disabled, mais toujours rien ... , je me demande si le pb ne vient pas de jquery.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

20 oct. 2016, 12:57

Bonjour,

Il faut que tu fasses davantage de debug de ton côté pour savoir à quel moment ça bloque et qu'on puisse t'aider efficacement.

1ère étape, ouvre la console Javascript (Ctel+maj+i sur Firefox ou Chrome) et regarde si il y a des messages d'erreur qui pourrait t'aider à identifier le/les problèmes.

Dans ton javascript, tu peux utiliser la fonction console.log() pour vérifier à différents endroits l'état d'exécution de ton script et de ses variables

Code : Tout sélectionner

console.log('test : '+nom_variable);
Et encore mieux, dans l'onglet inspecteur de la console de ton navigateur tu peux poser des points d'arrêt d'exécution javascript pour suivre pas à pas ce qui fonctionne
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 24 Messages

22 oct. 2016, 10:53

Merci beaucoup de ta réponse, je me servais de cette fonction pour voir où j'avais des bugs sur des sites mais pas pour du javascript. Après avoir effectué ce que tu me demandais de faire, voici le problème affiché:

age.html:11 Uncaught TypeError: Cannot read property 'substring' of undefined

je corrige cette erreur comment ?

Merci

Eléphant du PHP | 176 Messages

22 oct. 2016, 14:30

Bonjour,

La ligne 11 doit être celle-ci si je ne m'abuse

Code : Tout sélectionner

var j=(d.substring(0,2));
Il y a un moment ou tu passe ici et la variable d est "undefined"
donc que la date n'existe pas.

Ce qui vient en réalité de la ligne

Code : Tout sélectionner

var date = $(this).value();
La fonction "value" n'existe pas en Jquery c'est juste val();
Cordialement
Naroth