JSFiddle - React, Tailwind, and code Playground
HTML
<title>exercice12</title>
<script src="calculage.js"></script>
<body>
<h1>Calcul de l'âge</h1>
<br>
<form name="formage"> Entrez votre date de naissance (JJ/MM/AAAA) : <input type=text name="dt_naissance" size=10 maxlength=10>
<input type=button value="Calcul de l'âge" onClick="alert('Age = '+tjs_age(this.form.dt_naissance.value))"></form>
</body>
JavaScript
function CheckDate(d) {
// Cette fonction vérifie le format JJ/MM/AAAA saisi et la validité de la date.
// Le séparateur est défini dans la variable separateur
var amin=1850; // année mini
var amax=2500; // année maxi
var separateur="/"; // separateur entre jour/mois/annee
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}
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))
if (age=="") { age="Vous n'êtes pas encore née!"}
} else {
document.formage.dt_naissance.focus();
}
return age;
}
var today=new Date(),
mois_actuel=...