//////////////////////////////////////////////////////////////////////////////////////////////////////
// 사용법 //
// 1. 사용하고자하는 파일에서 아래의 예1과 같이 본 파일을 불러온다. //
// 예1 : <script language="JavaScript" src="파일 경로/check_jumin.js"></script> //
// 2. 원하는 이벤트 발생시 호출될 수 있도록 아래의 예2와 같이 html 테그의 속성으로 넣어준다. //
// 예2 : onBlur = "check_jumin(form name, jumin1 textfield name, jumin2 textfield name);" //
// onKeypress = "onlyNumber();" //
//////////////////////////////////////////////////////////////////////////////////////////////////////
// 사용법 //
// 1. 사용하고자하는 파일에서 아래의 예1과 같이 본 파일을 불러온다. //
// 예1 : <script language="JavaScript" src="파일 경로/check_jumin.js"></script> //
// 2. 원하는 이벤트 발생시 호출될 수 있도록 아래의 예2와 같이 html 테그의 속성으로 넣어준다. //
// 예2 : onBlur = "check_jumin(form name, jumin1 textfield name, jumin2 textfield name);" //
// onKeypress = "onlyNumber();" //
//////////////////////////////////////////////////////////////////////////////////////////////////////
function check_jumin(form, jumin1, jumin2){ // form의 이름과 주민등록번호를 입력하는 2개의 text 객체를 받아온다
// 주민등록번호 체크을 위한 기본 변수 선언
var jumin = jumin1.value + jumin2.value; // 입력된 주민등록번호 가져오기
var key = "234567892345"; // 주민번호 생성 key 값
var days = 0; // 입력된 월의 일수를 저장할 변수
var sum = 0; // 곱해서 더한 총합
var result = 0; // 연산후 마지막 숫자가 들어갈 변수
// 주민등록번호 체크을 위한 기본 변수 선언
var jumin = jumin1.value + jumin2.value; // 입력된 주민등록번호 가져오기
var key = "234567892345"; // 주민번호 생성 key 값
var days = 0; // 입력된 월의 일수를 저장할 변수
var sum = 0; // 곱해서 더한 총합
var result = 0; // 연산후 마지막 숫자가 들어갈 변수
var year_next = jumin.substring(0, 2); // 연도(뒤에 두자리)에 해당하는 두자리를 구함
var month = jumin.substring(2, 4); // 월에 해당하는 두자리를 구함
var day = jumin.substring(4, 6); // 일에 해당하는 두자리를 구함
var sex = jumin.charAt(6); // 성별에 해당하는 한자리를 구함
var month = jumin.substring(2, 4); // 월에 해당하는 두자리를 구함
var day = jumin.substring(4, 6); // 일에 해당하는 두자리를 구함
var sex = jumin.charAt(6); // 성별에 해당하는 한자리를 구함
var year_prev = (sex == "1" || sex == "2") ? "19" : "20"; // 연도(앞에 두자리)에 해당하는 두자리를 구함
var year = year_prev + year_next; // 연도에 해당하는 네자리를 구함
var year = year_prev + year_next; // 연도에 해당하는 네자리를 구함
// 길이가 13자인지 체크
if (jumin.length != 13){
alert("주민등록번호는 13자리이어야 합니다.\n\n다시 확인하시고 입력해 주세요");
return false;
}
if (jumin.length != 13){
alert("주민등록번호는 13자리이어야 합니다.\n\n다시 확인하시고 입력해 주세요");
return false;
}
// 월에 해당하는 두자리의 적합성 검사
if(month < 1 || month > 12){
alert("주민등록번호중, 월에 해당하는 두자리가 잘못 입력되었습니다.\n\n다시 확인하시고 입력해 주세요.");
jumin1.value="";
jumin1.focus();
return false;
}
if(month < 1 || month > 12){
alert("주민등록번호중, 월에 해당하는 두자리가 잘못 입력되었습니다.\n\n다시 확인하시고 입력해 주세요.");
jumin1.value="";
jumin1.focus();
return false;
}
// 월에 따른 일에 해당하는 두자리의 적합성 검사(윤년체크 포함)
if(month=="01" || month=="03" || month=="05" || month=="07" || month=="08" || month=="10" || month=="12") {
days = 31;
}
if(month=="04" || month=="06" || month=="09" || month=="11"){
days = 30;
}
if(month=="02"){
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){ // 윤년일 경우의 2월의 일수를 구함
days = 29;
}else{
days = 28;
}
}
if(month=="01" || month=="03" || month=="05" || month=="07" || month=="08" || month=="10" || month=="12") {
days = 31;
}
if(month=="04" || month=="06" || month=="09" || month=="11"){
days = 30;
}
if(month=="02"){
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){ // 윤년일 경우의 2월의 일수를 구함
days = 29;
}else{
days = 28;
}
}
if(day > days){
alert("주민등록번호중, 일에 해당하는 두자리가 범위보다 큽니다.\n\n다시 확인하시고 입력해 주세요.");
return false;
}
alert("주민등록번호중, 일에 해당하는 두자리가 범위보다 큽니다.\n\n다시 확인하시고 입력해 주세요.");
return false;
}
// 성별 비트에 따라 성별 자동으로 설정하기
if(sex == "1" || sex == "3"){} //form.sex.value="m";
else if(sex == "2" || sex == "4"){} //form.sex.value="f";
else{
alert("주민등록번호중, 성별에 해당하는 한자리가 잘못 입력되었습니다.\n\n다시 확인하시고 입력해 주세요.");
jumin2.value="";
jumin2.focus();
return false;
}
if(sex == "1" || sex == "3"){} //form.sex.value="m";
else if(sex == "2" || sex == "4"){} //form.sex.value="f";
else{
alert("주민등록번호중, 성별에 해당하는 한자리가 잘못 입력되었습니다.\n\n다시 확인하시고 입력해 주세요.");
jumin2.value="";
jumin2.focus();
return false;
}
// 주민등록번호 생성 알고리즘에 의한 유효성 체크
for(i=0; i<12; i++){
sum += jumin.charAt(i) * key.charAt(i);
}
result = (11 - (sum % 11)) % 10;
for(i=0; i<12; i++){
sum += jumin.charAt(i) * key.charAt(i);
}
result = (11 - (sum % 11)) % 10;
if (jumin.charAt(12) != result){
alert("유효하지 않는 주민번호입니다.\n\n다시 확인하시고 입력해 주세요.");
jumin1.value="";
jumin2.value="";
jumin1.focus();
return false;
}
return true;
}
alert("유효하지 않는 주민번호입니다.\n\n다시 확인하시고 입력해 주세요.");
jumin1.value="";
jumin2.value="";
jumin1.focus();
return false;
}
return true;
}
// 텍스트 필드에 숫자만 입력가능하게 한다.
function onlyNumber(){
if(event.keyCode < 48 || event.keyCode > 57)
event.returnValue = false;
return;
}
function onlyNumber(){
if(event.keyCode < 48 || event.keyCode > 57)
event.returnValue = false;
return;
}