---
title: "Personnummer"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/177683-personnummer"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "mats47"
published: "2009-03-26T13:55:02.000Z"
updated: "2009-03-27T22:21:17.000Z"
replies: 5
views: 874
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/177683-personnummer"
---

# Personnummer

## #1 — mats47, 2009-03-26T13:55Z

jag håller på med ett javscript som kontrollerar Personnummer.
klar med att den ska bara ta siffor och ta tio tecken.
hur gör jag för att kontrollerar den sista siffran i Personnummer?

```

<script language="Javascript">

function checkform(){
  if (document.signup.CPersonnummer.value.length < 10){
    alert("Du måste fylla i ditt Personnummer.")
      return false}
	  
</script>

<form name="signup" action="" method="POST" onSubmit="return checkform(this.form)">

<input name="CPersonnummer" type="text" maxlength="10" onkeyup="if(!this.value.match(/^\d+$/)){ this.value=(this.value.match(/\d+/))?this.value.match(/\d+/):''; }"/>
```

Permalänk: https://www.webforum.nu/p/177683

## #2 — Peter S, 2009-03-26T14:09Z

<http://www.webforum.nu/showthread.php?t=120777>

Permalänk: https://www.webforum.nu/p/2176527

## #3 — mats47, 2009-03-26T15:55Z

\<script type="text/javascript"\>
function personnummer(nr){
	this.valid=false;
	if(!nr.match(/^(\\d{2})(\\d{2})(\\d{2})(\\d{4})$/)){ return false; }
	this.now=new Date(); this.nowFullYear=this.now.getFullYear()+""; this.nowCentury=this.nowFullYear.substring(0,2); this.nowShortYear=this.nowFullYear.substring(2,4);
	this.year=RegExp.$1; this.month=RegExp.$2; this.day=RegExp.$3; this.controldigits=RegExp.$4;
	this.fullYear=(this.year\*1\<=this.nowShortYear\*1)?(this.nowCentury+this.year)\*1:((this.nowCentury\*1-1)+this.year)\*1;
	var months = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if(this.fullYear%400==0\|\|this.fullYear%4==0&&this.fullYear%100!=0){ months\[1\]=29; }
	if(this.month\*1\<1\|\|this.month\*1\>12\|\|this.day\*1\<1\|\|this.day\*1\>months\[this.month\*1-1\]){ return false; }
	this.alldigits=this.year+this.month+this.day+this.controldigits;
	var nn="";
	for(var n=0;n\<this.alldigits.length;n++){ nn+=((((n+1)%2)+1)\*this.alldigits.substring(n,n+1)); }
	this.checksum=0;
	for(var n=0;n\<nn.length;n++){ this.checksum+=nn.substring(n,n+1)\*1; }
	this.valid=(this.checksum%10==0)?true:false;
	this.sex=parseInt(this.controldigits.substring(2,3))%2;
}
\</script\>
\<script language="Javascript"\>

function checkform(){
  if (document.signup.CustomerName.value.length \< 4){
    alert("Du måste fylla i ditt Namn.")
      return false}
  
}
if(personnummer(this.CustomerPersonnummer.value).valid){ 
 alert("0giltigt personnummer")
 return false} 

\</script\>
\<form name="signup" action="" method="POST" onSubmit="return checkform(this.form)"\>
\<input name="CustomerPersonnummer" type="text"/\>

Varför fungerar det inte? när jag försöker anropa function personnummer i checkform function.

Permalänk: https://www.webforum.nu/p/2176547

## #4 — Peter S, 2009-03-26T19:07Z

```
<script language="Javascript">

function checkform(frm){
if (frm.CustomerName.value.length < 4){
alert("Du måste fylla i ditt Namn.")
return false}

}
if(! (new personnummer(frm.CustomerPersonnummer.value).valid)){
alert("0giltigt personnummer")
return false}

</script>
<form name="signup" action="" method="POST" onSubmit="return checkform(this.form)">
<input name="CustomerPersonnummer" type="text"/>
```

Permalänk: https://www.webforum.nu/p/2176568

## #5 — mats47, 2009-03-27T08:35Z

Får det inte att fungera

Jag hade en gammal person nr check som fungerar, men när jag ska läka ihop den med 
checkform får jag det inte att fungera.

function personnummer(nr){
kod kod 
}

\<form onsubmit="if(new personnummer(this.pnr.value).valid){ alert('Giltigt personnummer'); } else { alert('0giltigt personnummer'); }; return false;"\>
Personnummer: \<input type="text" name="pnr"\> \<input type="submit" value="Kontrollera"\>
\</form\>

Permalänk: https://www.webforum.nu/p/2176608

## #6 — Peter S, 2009-03-27T22:21Z

Det här fungerar för mig:

```
<script type="text/javascript">
/*  The code contained in this  file is copyrighted by [url]www.jojoxx.net[/url]
The file may be used for none commercial applications and distributed
as long as these lines remain intact.  The file or part of it may not
be sold  or  included  in any  other commercial  application  without
agreement from the author. If you have questions or comments, contact
the author at [url]http://www.jojoxx.net[/url]

© Copyright - [url]www.jojoxx.net[/url] - 2004                                */

function personnummer(nr){
	this.valid=false;
	if(!nr.match(/^(\d{2})(\d{2})(\d{2})\-(\d{4})$/)){ return false; }
	this.now=new Date(); this.nowFullYear=this.now.getFullYear()+""; this.nowCentury=this.nowFullYear.substring(0,2); 

this.nowShortYear=this.nowFullYear.substring(2,4);
	this.year=RegExp.$1; this.month=RegExp.$2; this.day=RegExp.$3; this.controldigits=RegExp.$4;
	this.fullYear=(this.year*1<=this.nowShortYear*1)?(this.nowCentury+this.year)*1:((this.nowCentury*1-1)+this.year)*1;
	var months = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if(this.fullYear%400==0||this.fullYear%4==0&&this.fullYear%100!=0){ months[1]=29; }
	if(this.month*1<1||this.month*1>12||this.day*1<1||this.day*1>months[this.month*1-1]){ return false; }
	this.alldigits=this.year+this.month+this.day+this.controldigits;
	var nn="";
	for(var n=0;n<this.alldigits.length;n++){ nn+=((((n+1)%2)+1)*this.alldigits.substring(n,n+1)); }
	this.checksum=0;
	for(var n=0;n<nn.length;n++){ this.checksum+=nn.substring(n,n+1)*1; }
	this.valid=(this.checksum%10==0)?true:false;
	this.sex=parseInt(this.controldigits.substring(2,3))%2;
}
</script>

<script language="Javascript">

function checkform(frm){
 if (frm.CustomerName.value.length < 4){
  alert("Du måste fylla i ditt Namn.")
  return false
 }
 if(! (new personnummer(frm.CustomerPersonnummer.value).valid)){
  alert("Ogiltigt personnummer")
  return false
 }
}

</script>
<form name="signup" action="" method="POST" onSubmit="return checkform(this)">
<input name="CustomerName">
<input name="CustomerPersonnummer" type="text"/>
<input type="submit">
</form>
```

Permalänk: https://www.webforum.nu/p/2176725

---

Tråden på webben: https://www.webforum.nu/amne/javascript/177683-personnummer
