Som ni kanske förstår är det ett person nummer.
Säg att någon skriver in
1980 06 12 0245
nu vill jag kunna smälta ihop dom så det blir: 198006120245
Jag skulle även villja kunna göra så man tar bort de 2 första(19) samt sätta in ett "-" innan de fyra sissta siffrorna så det blir 800612-0245
var pn=new personnummer("750624-6649");
if(pn.valid){
alert("Personnumret är giltigt.");
alert("Personens födelseår är "+pn.fullYear);
var sex=new Array("kvinna","man");
alert("Personen är "+sex[pn.sex]);
}
Det beror på när du vill att kontrollen skall göras. Vid submit på formuläret eller när man skrivit klart personnumret (vid submit är antagligen bäst).
<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>12||this.day*1>months[this.months*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;
}
function addit(obj){
obj.alla.value=obj.strY.value.substring(2)+obj.strM.value+obj.strD.value+((obj.strN.value)?"-"+obj.strN.value:"");
if(obj.alla.value.length==11){
var pn=new personnummer(obj.alla.value);
if(!pn.valid){
alert("Personnumret är inte korrekt.");
obj.strN.focus();
} else {
alert("Tack så mycket.");
}
}
}
function checkform(obj){
var pn=new personnummer(obj.alla.value);
if(!pn.valid){
alert("Personnumret är inte korrekt.");
return(false);
}
return(true);
}
</script>
<form onsubmit="return checkform(this);">
<input type="text" name="strY" onkeyup="addit(this.form);" onkeypress="addit(this.form);" />
<input type="text" name="strM" onkeyup="addit(this.form);" onkeypress="addit(this.form);" />
<input type="text" name="strD" onkeyup="addit(this.form);" onkeypress="addit(this.form);" />
<input type="text" name="strN" onkeyup="addit(this.form);" onkeypress="addit(this.form);" />
<input type="text" name="alla" readonly="readonly" />
</form>
Nu har jag pillat och försökt få in koden i min sida men jag får det inte att funka eftersom jag har en massa andra funktioner för just födelsedata delen.
förklaring: Checka1-4() = Flyttar marökren till nästa fönster vid onkeyup strY->strM->strD->strN->ett fönster efter födelsedata delen.
checkBdate() = Om alla 12 tecken finns (yyyymmdd-nn) så byts en bild ut som talar om att tillräckligt många tecken finns.
jag har även en funktion som skriver ut inehållet i textboxarna till en span
JavaScript
function checka()
{
var letters = document.frmAddUser.strY.value.length +1;
if (letters <= 4)
{document.frmAddUser.strY.focus()}
else
{document.frmAddUser.strM.focus()}
}
function checka2()
{
var letters2 = document.frmAddUser.strM.value.length +1;
if (letters2 <= 2)
{document.frmAddUser.strM.focus()}
else
{document.frmAddUser.strD.focus()}
}
function checka3()
{
var letters3 = document.frmAddUser.strD.value.length +1;
if (letters3 <= 2)
{document.frmAddUser.strD.focus()}
else
{document.frmAddUser.strN.focus()}
}
function checka4()
{
var letters4 = document.frmAddUser.strN.value.length +1;
if (letters4 <= 4)
{document.frmAddUser.strN.focus()}
else
{document.frmAddUser.strStad.focus()}
}
function checkBdate()
{
if ((document.frmAddUser.strY.value.length <=3) || (document.frmAddUser.strM.value.length <=1) || (document.frmAddUser.strD.value.length <=1) || (document.frmAddUser.strN.value.length <=3))
{document.getElementById('errImageBdata').src='gfx/errRed.gif';}
else
{document.getElementById('errImageBdata').src='gfx/errGreen2.gif';}
}