M mats47 Medlem sedan mars 2009 185 inlägg Frågan 26 mars 2009 13:55 #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+/):''; }"/>
P Peter S Medlem sedan dec. 2002 5 483 inlägg M mats47 Medlem sedan mars 2009 185 inlägg <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.
P Peter S Medlem sedan dec. 2002 5 483 inlägg <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"/>
M mats47 Medlem sedan mars 2009 185 inlägg 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>
P Peter S Medlem sedan dec. 2002 5 483 inlägg 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>