Avatar billede hcthorsen Praktikant
14. oktober 2009 - 12:24 Der er 2 kommentarer og
1 løsning

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?
Avatar billede Slettet bruger
14. oktober 2009 - 23:30 #1
Virkede det jeg skrev sidste gang ikke:
http://www.eksperten.dk/spm/882872
Avatar billede hcthorsen Praktikant
16. oktober 2009 - 19:54 #2
Jo, scriptet virker. Jeg ved du ikke var glad for det gamle script, men det kunne nogle ting som dit modificerede script ikke kan. Det kontrollerer blandt andet for om fødselsdatoen i cpr-nummeret er indtruffet. Desuden kontrolleres for om cpr-nummeret overholder modulus11 - jeg er blevet enig med mig selv om at jeg gerne vil have det med, vel vidende at ikke alle nye cpr-numre overholder dette.

Jeg vil altså gerne beholde mit gamle script, men gerne have tilføjet den funktionalitet, at alderen beregnes ud fra et input-felt i formatet dd-mm-yyyy.
Avatar billede hcthorsen Praktikant
12. november 2009 - 12:09 #3
Nå, lukker....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester