webForumDet fria alternativet

Personnummer

5 svar · 869 visningar · startad av mats47

mats47Medlem sedan mars 2009185 inlägg
#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+/):''; }"/>
Peter SMedlem sedan dec. 20025 484 inlägg
mats47Medlem 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.

Peter SMedlem sedan dec. 20025 484 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"/>
mats47Medlem 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>

Peter SMedlem sedan dec. 20025 484 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>
Genererad på 373 ms · cache AV · v20260730165559-full.f96bc7eb