webForumDet fria alternativet

Personnummer

JavaScript

5 svar · 869 visningar · startad av mats47

Medlem sedan mars 2009185 inlägg
Frågan#1

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+/):''; }"/>
Medlem sedan dec. 20025 483 inlägg
Medlem sedan mars 2009185 inlägg
#3

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

Medlem sedan dec. 20025 483 inlägg
#4
<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"/>
Medlem sedan mars 2009185 inlägg
#5

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>

Medlem sedan dec. 20025 483 inlägg
#6

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>
250 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)