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
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
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; }
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... :)
03. december 2003 - 10:29
#3
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>
03. december 2003 - 10:35
#5
Du kan kalde funktionen med JSmodulus11(fodsel.value+cpr.value)
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>
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?
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...
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??
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>
04. december 2003 - 10:54
#11
jeg ordnede det selv.... :) gad bare ikke rigtig lave noget igår heheh
Vi tilbyder markedets bedste kurser inden for webudvikling