자바스크립트

외국인 등록번호 체크

은둔한량 2013. 2. 18. 17:01
반응형


function fgn_no_chksum(reg_no) {
var sum = 0;
var odd = 0;

buf = new Array(13);
for (i = 0; i < 13; i++) buf[i] = parseInt(reg_no.charAt(i));

odd = buf[7]*10 + buf[8];

if (odd%2 != 0) {
return false;
}

if ((buf[11] != 6)&&(buf[11] != 7)&&(buf[11] != 8)&&(buf[11] != 9)) {
return false;
}

multipliers = [2,3,4,5,6,7,8,9,2,3,4,5];
for (i = 0, sum = 0; i < 12; i++) sum += (buf[i] *= multipliers[i]);


sum=11-(sum%11);

if (sum>=10) sum-=10;

sum += 2;

if (sum>=10) sum-=10;

if ( sum != buf[12]) {
return false;
}
else {
return true;
}
}




function check_no(form){
var fgn_reg_no = form.fgn_reg_no1.value
+ form.fgn_reg_no2.value;

if (fgn_reg_no == ''){
    alert('외국인등록번호를 입력하십시오.');
    return false;
}

if (fgn_reg_no.length != 13) {
    alert('외국인등록번호 자리수가 맞지 않습니다.');
    return false;
}
if ((fgn_reg_no.charAt(6) == "5") || (fgn_reg_no.charAt(6) == "6"))
{
    birthYear = "19";
}
else if ((fgn_reg_no.charAt(6) == "7") || (fgn_reg_no.charAt(6) == "8"))
{
    birthYear = "20";
}
else if ((fgn_reg_no.charAt(6) == "9") || (fgn_reg_no.charAt(6) == "0"))
{
    birthYear = "18";
}
else
{
    alert("등록번호에 오류가 있습니다. 다시 확인하십시오.");
    return false;
}
birthYear += fgn_reg_no.substr(0, 2);
birthMonth = fgn_reg_no.substr(2, 2) - 1;
birthDate = fgn_reg_no.substr(4, 2);
birth = new Date(birthYear, birthMonth, birthDate);

if ( birth.getYear() % 100 != fgn_reg_no.substr(0, 2) || birth.getMonth() != birthMonth || birth.getDate() != birthDate) {
    alert('생년월일에 오류가 있습니다. 다시 확인하십시오.');
    return false;
}

if (fgn_no_chksum(fgn_reg_no) == false){
    alert('외국인등록번호에 오류가 있습니다. 다시 확인하십시오.');
    return false;
}
else {
    alert ('정상입니다.');
    return true;
}

}


<form>
외국인등록번호
<INPUT onkeypress="if((event.keyCode <48)||(event.keyCode >57)) event.returnValue=false;" name=fgn_reg_no1 maxLength=6 size=6>
-
<INPUT onkeypress="if((event.keyCode <48)||(event.keyCode >57)) event.returnValue=false;" name=fgn_reg_no2 maxLength=7 size=7>

</form>

반응형