본문 바로가기

IT/JSP

JSP - 주민등록번호 유효성 검사 함수

function CheckSSN() {

//--------------------------------

// 주민번호 체킹을 위한 기본 변수 선언

//----------------------------------

var f = document.regiform; // '폼 이름' 변수 선언

var ssn = f.u_ssn.value; //주민번호 13자리값

var key = "234567892345"; // 주민번호 생성 key 값

var sum = 0; // 곱해서 더한 총합 

var yy = ssn.substring(0,2); //년도에 해당하는 두자리.

var mm = ssn.substring(2,4); //달에 해당하는 두자리.

var dd = ssn.substring(4,6); //날짜에 해당하는 두자리.

var sex = ssn.charAt(6); //성별에 해당하는 한자리.

var pre_yy = (sex == "1" || sex == "2") ? "19" : "20"; //성별에 따른 년도 두자리생성

var totalyy = pre_yy + yy ; //실제 년도 완성(윤년에 따른 2월 일(날짜) 범위 체크시 사용)


if(!ssn) return; //OnBlur()를 사용했기때문에 넣어줌.


//--------------------------------

// 숫자만 입력했는지 검사

//---------------------------------

if(isNaN(ssn)) {

alert("주민등록번호는 숫자만 입력가능합니다.");

f.u_ssn.value=="";

f.u_ssn.focus();

return; 

}

//--------------------------------

// 주민번호가 13자리인지 체킹

//---------------------------------

if (ssn.length != 13) {

alert("주민등록번호 13자리이어야 합니다.");

return;

}


//--------------------------------

// 월,성별의 입력 범위 유효성 검사

//---------------------------------

if((mm<01||mm>12||sex>4)){

alert("월에 해당하는 두자리가 잘못 입력되었습니다.");

f.u_ssn.value="";

f.u_ssn.focus();

return;

}


//--------------------------------------------------

// 월에 따른 날짜의 범위가 적합한지 검사(윤년체크도 포함)

//--------------------------------------------------


if (mm==01 || mm==03 || mm==05 || mm==07 || mm==08 || mm==10 || mm==12) test_dd=31;

if (mm==04 || mm==06 || mm==09 ||mm==11) test_dd=30;

if (mm==02) {

if (((totalyy % 4)==0) && ((totalyy % 100)!=0) || ((totalyy % 400)==0)) test_dd=29;

else test_dd=28;

}

if (dd > test_dd) {alert("일자가 틀립니다.");return; }


//--------------------------------------

// 성별 비트에 따라 성별 자동으로 설정하기

//--------------------------------------

if((sex=="1") || (sex=="3")){

f.u_sex.value="남자"

} else {f.u_sex.value="여자"

}


//----------------------------------------------

// 주민등록 생성 알고리즘에 의한 마지막 번호 유효성 검사

//-----------------------------------------------


for(i=0;i<12;i++){

sum += ssn.charAt(i)*key.charAt(i);

sum=11-(sum % 11)

endNo=sum%10; 


if (ssn.charAt(12) != endNo){

alert("\n 유효하지 않는 주민번호입니다.\n\n 다시 확인하시고 입력해 주세요");

f.u_ssn.value = "";

f.u_ssn.focus(); 

return;

}

}