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 SoftwareOne
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