Beregn alder fra CPR og datofelt - igen igen beklager!
Jeg har tidligere rejst dette spørgsmål, men det er aldrig lykkedes at få en løsning ud af det jeg kan bruge til noget. Jeg prøver igen.Jeg har sakset følgende kode (i let modificeret form) fra http://www.eksperten.dk/spm/525391, og det virker fint:
function cprCheck(flt){
var cpr = flt.value,match = false,c = flt.form.elements["cpr-status"];
if(cpr.match(/[0-9]{6}\-?[0-9]{4}/)){
c.disabled = false;
cpr = cpr.replace(/\-/g,"");
var chk = 0;
for(i=9;i>-1;i--){
chk += (+cpr.charAt(i))*((i>2)?(10-i):(4-i));
}
if(chk%11==0)match = true;
var dag = new Date(+cpr.substring(4,2),+cpr.substring(2,2)-1,+cpr.substring(0,2));
if(dag.getTime() > new Date().getTime() || !match){
c.style.color = "red";
c.value = "Ugyldigt Cpr nr.";
}else{
c.style.color = "green";
c.value = "Gyldigt Cpr nr. (Køn: " + ((cpr.match(/[13579]$/))?"Mand":"Kvinde") + ")";
}
}else{
c.disabled = true;
c.style.color = "black";
c.value = (cpr.length>0)?"Validerer ...":"<-- Indtast CPR nr.";
}
}
Så skriver Roenving noget med
Efter stedet hvor streger trækkes ud:
var aar = +cpr.substring(4,2);
var maaned = +cpr.substring(2,2);
var dag = +cpr.substring(0,2);
var nu = new Date();
var alder = nu.getFullYear() - (aar + (nu.getYear() > aar ? 2000 : 1900;));
alder -= (maaned > nu.getMonth() + 1 || maaned == nu.getMonth() + 1 && dag > nu.getDate()) ? 1 : 0;
-- og senere indsætte det, f.eks.
c.value = "Gyldigt Cpr nr. (" + alder + " år; Køn: " + ((cpr.match(/[13579]$/))?"Mand":"Kvinde") + ")";
Jeg kan ikke finde ud af at koble disse stumper sammen. Desuden ville jeg gerne have lavet en rettelse så alderen ikke blev beregnet ud fra dagen i dag, men ud fra indholde af et input-felt i formatet dd-mm-yyyy.
Er der nogen der kan finde ud af det?
