CPR validering version 2 bør virke
Jeg er ikke for skrap til javascript. Jeg har gennemgået og prøvet at integrere fra de spørsmål, der er oprettet om det her på eksperten. Udfra det sidst oprettede http://www.eksperten.dk/spm/243145, blev det accepterede resultatat af testsiden som nedenstående, efter mit samsurium. Jeg kan bare ikke få det til at validere andet end hvis der ikke er 10 cifre.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
<script>
function isLeapYear(year)
{
var result = false;
var div4,div100,div400;
div4 = year % 4;
div100 = year % 100;
div400 = year % 400;
result = ((div4==0) & (div100!=0)) || ((div100==0) && (div400==0))
return result;
}
function validateDate(d)
{
if(d.length!=6)
return false;
var daysInMonth = Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
var day = parseInt(d.substr(0,2),10);
var month = parseInt(d.substr(2,2),10);
var year = parseInt(d.substr(4,2),10);
if(year < 0)
return false;
if(isLeapYear(year))
daysInMOnth[2] = 29;
if(month < 1 || month > 12)
return false;
if(day < 1 || day > daysInMonth[month])
return false;
return true;
}
function validateCPR(cpr)
{
// requires: cpr no - format: DDMMYYCCCC
// CCCC: control digits
if(cpr.length!=10)
return false;
var d = cpr.substr(0,6);
if(!validateDate(d))
return false;
var w = 4*parseInt(cpr.substr(0,1),10) +3*parseInt(cpr.substr(1,1),10) +2*parseInt(cpr.substr(2,1),10) +7*parseInt(cpr.substr(3,1),10)
+6*parseInt(cpr.substr(4,1),10) +5*parseInt(cpr.substr(5,1),10) +4*parseInt(cpr.substr(6,1),10) +3*parseInt(cpr.substr(7,1),10)
+2*parseInt(cpr.substr(8,1),10) +parseInt(cpr.substr(9,1),10);
if(w%11!=0)
return false;
return true;
}
function isValidCPR(cpr)
{
if (!validateCPR(cpr)) {
window.event.returnValue = false;
window.event.cancelBubble = true;
alert("CPR-Nummer ikke validt");
}
}
alert(isValidCPR('0123456789'));
</script>
</head>
<body>
<form method="post" name="f" onsubmit="isValidCPR(document.f.cpr.value)">
<input type="text" name="cpr">
<input type="submit" value="ok">
</form>
</body>
</html>
