Avatar billede goatshrine Nybegynder
03. december 2003 - 10:21 Der er 10 kommentarer og
1 løsning

Valider CPR nr

Hej Folkens.

Jeg vil gerne have et javascript der kan validere CPR nummer.

Jeg har de første 6 cifre i et input felt (fodsel) og CPR numrene (4 cifre) i et anden felt (cpr). Den skal validere on submit.

er der ikke en der lige har sådan et script?

mvh
Christian
Avatar billede -cls- Nybegynder
03. december 2003 - 10:24 #1
function JSmodulus11(cprnr)
{
    if (cprnr.length != 10) return false;
    modusArray = new Array(4, 3, 2, 7, 6, 5, 4, 3, 2);
    var xsum = 0;
    for(var i = 0; i < modusArray.length; i++)
    {
        var x = eval(cprnr.substring(i, i+1)*1);
        xsum += eval(x * modusArray[i]);
    }
    var kontrolvaerdi = eval(11-Math.floor((xsum/11-Math.floor(xsum/11))*11+0.000001));
    var kontrolciffer = eval(cprnr.substring(9,10)*1);
    if (kontrolvaerdi == kontrolciffer) return true;
    else return false;
}
Avatar billede goatshrine Nybegynder
03. december 2003 - 10:28 #2
ja det ser fint ud, hvis du så bare kan få det til at passe til den måde min form ser ud... :)
Avatar billede mm12010 Nybegynder
03. december 2003 - 10:35 #4
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Valider CPR nr</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/javascript">
function cprTjeck(frm){
    if(frm.cpr.value.match(/[0-9]{6}\-[0-9]{4}/)){
        return true;
        }
    alert("ikke valid CPR");
    return false;
    }
</script>
</head>
<body>
<form name="form1" method="post" action="?submit=true" onSubmit="return cprTjeck(this);">
  <input type="text" name="cpr">
  <input type="submit" name="Submit" value="Submit">
</form>
</body>
</html>
Avatar billede -cls- Nybegynder
03. december 2003 - 10:35 #5
Du kan kalde funktionen med JSmodulus11(fodsel.value+cpr.value)
Avatar billede roenving Novice
03. december 2003 - 12:35 #6
-- og en sammenkobling af metoderne kunne se sådan ud (her også med adskillige forbedringer, nogle af dem voldsomme i performance !-)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Valider CPR nr</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/javascript">
function cprTjeck(frm){
    var cpr = frm.cpr.value
    if(cpr.value.match(/[0-9]{6}\-[0-9]{4}/)){
        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)return true;
        }
    alert("ikke valid CPR");
    return false;
    }
</script>
</head>
<body>
<form name="form1" method="post" action="?submit=true" onSubmit="return cprTjeck(this);">
  <input type="text" name="cpr">
  <input type="submit" name="Submit" value="Submit">
</form>
</body>
</html>
Avatar billede goatshrine Nybegynder
03. december 2003 - 13:34 #7
CLS det virker fint :)

men jeg kunne godt tænke mig at den fortalte at CPR nr ikke er korrekt udfyldt hvis der er mellem 1 og 9 tegn.

ved 0 tegn skal den ikke gøre noget.

kan du ikke lige klare det?
Avatar billede -cls- Nybegynder
03. december 2003 - 23:07 #8
Du er nok vel krævende, når du spørger efter hjælp! Prøv nu om du selv kan få hernecellerne på gled ;) Det er da godt nok det simpleste af øvelsen...
Avatar billede -cls- Nybegynder
03. december 2003 - 23:16 #9
Ok - så skidt da. Du kan fx gøre noget lign.
function CPRvalider(str) {
if(str.length)if(str.length<9)return false; else return JSmodulus11(str);
}
function valider(str) {
if(!CPRvalider(str)) alert("Ugyldig");
}

Så kan du benytte valider(fodsel.value+cpr.value) i stedet for JSmodulus11(fodsel.value+cpr.value)

Jeg har ikke testet koden, og den er ikke pæn, men det er vel inspiration nok??
Avatar billede roenving Novice
04. december 2003 - 01:03 #10
Der manglede åbenbart et sæt paranteser i min kode, som _ellers_ er ganske suveræn !-)

-- min undskyldning er selvfølgelig, at jeg lige havde 10 min. på en offentlig computer ...

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Valider CPR nr</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/javascript">
function cprTjeck(frm){
    var cpr = frm.cpr.value
    if(cpr.match(/[0-9]{6}\-[0-9]{4}/)){
        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)return true;
        }
    alert("ikke valid CPR");
    return false;
    }
</script>
</head>
<body>
<form name="form1" method="post" onSubmit="return cprTjeck(this);">
  <input type="text" name="cpr">
  <input type="submit" name="Submit" value="Submit">
</form>
</body>
</html>
Avatar billede goatshrine Nybegynder
04. december 2003 - 10:54 #11
jeg ordnede det selv.... :)
gad bare ikke rigtig lave noget igår heheh
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