Per Simonsen
<html>
<head>
<script>
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Sjekksifferene i fødselsnummeret regnes ut etter modulus 11.
// Portet fra pascal til js - Arnulf Sortland - http://sa.no/
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function GyldigPersNr(Streng)
{
var T = new Array(11);
document.writeln('Sjekker personnummer: '+ Streng );
if( Streng.length != 11) // Feil lengde
{
// document.writeln('Feil lengde');
return -3;
}
for(i=0; i<11; i++) // Konverter til array of int
{
T[i] = Streng.charCodeAt(i)-48;
// document.writeln( T[i] );
}
Sum = ( T[0] * 3 + T[1] * 7 + T[2] * 6 + T[3] + T[4] * 8 + T[5] * 9
+ T[6] * 4 + T[7] * 5 + T[8] * 2 ) % 11;
if( Sum != 0)
{
Sum = 11 - Sum;
}
// document.writeln('<br> Chk1: '+ Sum );
if( T[9] != Sum) // første kontrollsiffer er feil
{
// document.writeln('første kontrollsiffer er feil');
return -1;
}
Sum = ( T[0] * 5 + T[1] * 4 + T[2] * 3 + T[3] * 2 + T[4] * 7 + T[5] * 6
+ T[6] * 5 + T[7] * 4 + T[8] * 3 + T[9] * 2) % 11;
if( Sum != 0 )
{
Sum = 11 - Sum;
}
// document.writeln('<br> Chk2: '+ Sum );
if( T[10] != Sum ) // andre kontrollsiffer er feil
{
// document.writeln('andre kontrollsiffer er feil');
return -2;
}
return 1;
}
function PrintError(ret )
{
switch( ret )
{
case 1:
document.writeln('Personnummer Ok !<br>');
break;
case -1:
document.writeln('første kontrollsiffer er feil<br>');
break;
case -2:
document.writeln('andre kontrollsiffer er feil<br>');
break;
case -3:
document.writeln('Feil lengde<br>');
break;
case -4:
document.writeln('Feil i dato<br>');
break;
case -5:
document.writeln('Personnummer > 500<br>');
break;
default:
document.writeln('Error: '+ret+'<br>');
}
}
</script>
</head>
<body>
<script>
document.writeln('Det vert ikke sjekket for gyldig dato<br>');
document.writeln('Heller ikke om personnr < 500 <p>');
PrintError( GyldigPersNr('020813512') );
PrintError( GyldigPersNr('02081351221') );
PrintError( GyldigPersNr('02081351212') );
PrintError( GyldigPersNr('02081351220') );
</script>
</body>
</html>
if( (T[8] % 2) == 0) {
document.writeln(' kvinne ')
}else{
document.writeln(' mann ');
}
arnulf @ http://sa.no
"Arnulf Sortland" <som...@sa.no> wrote in message news:QKc69.9611$sR2.1...@news4.ulv.nextra.no...
if( (T[8] % 2) == 0) {
return 1;
}else{
return 2;
}
}
function PrintError(ret )
{
switch( ret )
{
case 1:
document.writeln('Personnummer tilhører en kvinne !<br>');
break;
case 2:
document.writeln('Personnummer tilhører en mann !<br>');
break;
case -1:
document.writeln('første kontrollsiffer er feil<br>');
break;
case -2:
document.writeln('andre kontrollsiffer er feil<br>');
break;
case -3:
document.writeln('Feil lengde<br>');
break;
case -4:
document.writeln('Feil i dato<br>');
break;
case -5:
document.writeln('Personnummer > 500<br>');
break;
default:
document.writeln('Error: '+ret+'<br>');
}
}
</script>
</head>
<body>
Det vert ikke sjekket for gyldig dato<br>
Heller ikke om personnr < 500 <p>
<script>
Per Simonsen
eneste kommentaren jeg har er at følgende:
> for(i=0; i<11; i++) // Konverter til array of int
> {
> T[i] = Streng.charCodeAt(i)-48;
> // document.writeln( T[i] );
> }
efter min mening heller bør skrives:
for(var i = 0; i < 11; i++) {
T[i] = parseInt(Streng.charAt(i), 10);
}
Morten!
--
"If you don't know what your program is supposed to do,
you'd better not start writing it."
Spørsmål som sendes uoppfordret via mail kan ikke beregnes besvart.