Je suis en train de chercher une fonction javacript qui me permettrais de calculer un âge automatiquement et de l'inscrire dans un input ceci grâce à une date d'anniversaire remplis dans un autre input.
J'ai trouvé un sujet très intéressant la dessus et qui fait ce que je vous explique mais il y a un problème dans le script. Il ne calcule pas exactement l'âge. Il y a quelques raté avec les mois ou jours...
Voici mon code actuel :
<!DOCTYPE html>
<html>
<body>
<script>
function CalculAge() {
var td=new Date();// Le date d'ouverture de la page (aujourd'hui)
var dtn=document.getElementById('DateNais').value; // on lit la date de naissance
var an=dtn.substr(6,4); // l'année (les quatre premiers caractères de la chaîne à partir de 6)
var mois=dtn.substr(3,2);// On selectionne le mois de la date de naissance
var day= dtn.substr(0,2); // On selectionne la jour de la date de naissance
var age=td.getFullYear()-an; // l'âge du patient
var mMois=td.getMonth()-mois+1; // On calcul le mois de la date - le mois de la date de naissance
if(mMois < 0) // s'il est strictement inferieur a 0
{
age=age-1; // On enléve 1 ans a l'age
}
else
{
if(mMois == 0)// s'il égal 0 on est sur le même mois
{
var mDate=td.getDay()-day;
if(mDate < 0)
{
age=age-1;
}
}
}
document.getElementById('Age').value=age; // que l'on place dans le input d'id Age
}
</script>
<label>Date de Naissance : </label><input type="text" id="DateNais" name="dateNais" Onblur="CalculAge()">
<label>Age : </label><input type="text" name="age" id="Age">
</body>
</html>
J'ai fait les motifs expliqué dans le sujet mais ça ne fonctionne pas super...
Apparement il faut ajouter un +1 à la ligne 14 :
var mMois=td.getMonth()-mois+1;
ou alors un +1 à la ligne 10 :
var mois=dtn.substr(3,2)-1;
J'ai essayé les deux mais ça n'est toujours pas parfait...
Malheureusement non, la 2ème solution ne fonctionne qu'à moitié.
Si tu essaies aujourd'hui en mettant par exemple 19-06-2015 ou 20-06-2015 ou 21-06-2015 (nous sommes le 20-06-2016), et bien le 2ème code te retournera toujours "1 an".
Seul le premier code te retournera "0 an" pour la date du 21-06-2015.
Utiliser Javascript pour faire une simple soustraction, c’est un peu donner de la confiture aux cochons !
Alors profitons-en donnons les années, les mois et les jours !
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title>Age in years, months and days</title>
<style type="text/css">
#pge{display:block;width:400px;margin:0 auto;background-color:#ffd;padding:5px;}
</style>
</head>
<body>
<div id="pge">
<fieldset><legend>Age en années mois et jours</legend>
<p><label>Date de naissance : <input id="dte" type="text" onblur="calc(this.value)"><label> ok !</p>
<p id="rsp"></p>
</fieldset>
</div>
<script type="text/javascript">
function calc(v){var month, date, year;
// la méthode replace avec une fonction pour définir le jour, le mois et l'année
v.replace(/0?([\d]{1,2})[\D]*0?([\d]{1,2})[\D]*([\d]{4,4})/g,
function(mtf,qn,ms,an){
var jm=+ms-1,brd=new Date(an,jm,qn,12,0,0);
var rsp=document.getElementById('rsp');
if (brd.getMonth()!=jm) {rsp.innerHTML="La date "+v+" semble erronée\nEntrez les dates sous la forme jj/mm/aaaa";return}
var tdy=new Date();tdy.setHours(12,0,0); // at noon !
var str='Aujourd’hui : '+tdy.toLocaleString()+'<br>Naissance le : '+brd.toLocaleString()+'<br>';
var dltDays=0;
while (tdy.getDate()!=brd.getDate()) {dltDays++;tdy.setDate(tdy.getDate()-1);}
// Nous travaillons la 1er jour du mois
tdy.setDate(1);brd.setDate(1);
var dltMonths=0;while (tdy.getMonth()!=brd.getMonth()) {dltMonths++;tdy.setMonth(tdy.getMonth()-1);}
var dltYears=0;while (tdy.getFullYear()!=brd.getFullYear()) {dltYears++;tdy.setFullYear(tdy.getFullYear()-1);}
str+='Vous avez '+dltYears+' an'+(dltYears<2?' ':'s ')+' '+dltMonths+' mois '+(dltDays?'et jour'+(dltDays<2?'':'s')+' '+dltDays:'.');
document.getElementById('rsp').innerHTML=str;
});
}
</script>
</body>
</html>
function calculer() { var jj; var mm; var aa; if(f.jour.value<=0 || f.jour.value>31 || f.mois.value<=0 || f.mois.value>12 || f.annee.value<=0 ) alert("Erreur dans la date de naissance"); else { jj=eval(f.j.value)-eval(f.jour.value) mm=eval(f.m.value)-eval(f.mois.value) aa=eval(f.a.value)-eval(f.annee.value) if(jj<0) { jj=jj+30 mm=eval(f.m.value)-1 } else if(mm<0) { { mm=mm+12 aa=eval(f.a.value)-1 } } f.Resultat.value="ans "+aa+"/ mois "+mm+"/ jour "+jj }
Calcul âge d'après date de naissance
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Dev
Dev