Visa ett inlägg
Oläst 2006-01-22, 12:51 #7
Lindahl Lindahl är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Dec 2004
Inlägg: 854
Lindahl Lindahl är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Dec 2004
Inlägg: 854
Japp, personangrepp kan vi skippa, kan tom vara så vänlig att jag postar en variant åt dig. Denna kollar dock inte giltigheten på århundradet, vilket gör att du kan knappa in att du är född på 1700-talet utan att den klagar.
Kod:
function valideraPersonnummer(x) {
  x = x.replace(/[^\d]/g,'');
  if (x.length==10) {
    var y = parseInt(x.substring(0,2));
    var m = parseInt(x.substring(2,4));
    var d = parseInt(x.substring(4,6));
    var n = parseInt(x.substring(6,10));
  } else if (x.length==12) {
    x = x.substring(2,12);
    var y = parseInt(x.substring(2,4));
    var m = parseInt(x.substring(4,6));
    var d = parseInt(x.substring(6,8));
    var n = parseInt(x.substring(8,12));
  } else {
    alert("Fel antal siffror i personnummer");
    return false;
  }

  var datum = new Date(y,m-1,d);
  if ((d!=datum.getDate()) || (m!=datum.getMonth()+1) || (y!=datum.getYear())) {
    alert("Felaktigt datumformat");
    return false;
  }

  var s=0;
  for (i=0; i<9; i++) {
    var t = parseInt(x.substring(i,i+1));
    if (i%2==0) 
      t*=2;
    if (t>=10) 
      s=s+1+(t%10);
    else
      s+=t;
  }  
  var c=10-Math.floor(s%10);
  if (c==10) c=0;
  if (c!=(n%10)) {
    alert("Felaktig kontrollsiffra");
    return false;
  }

  alert("Personnummer korrekt");
  return true;
}
Lindahl är inte uppkopplad   Svara med citatSvara med citat