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 fra Jysk IT
Sikkerhed skal være en del af driften
Skal virksomheder stå stærkere mod angreb og kunne udvikle sig, skal sikkerhed, drift og forretning tænkes sammen. Det er tanken bag Jysk IT’s ambition om at skabe en “sikker fremtid” for kunderne.
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