이곳에 구현해 놓은 내용은..
만 14세 미만인 사람이 회원가입을 할때 부모 동의를 얻기 위해 부모 주민번호를 입력받는 상황에서,
부모가 만 19세 이상 성년자 인지를 확인하기 위해 주민번호를 기준으로 만 나이를 체크하는 것입니다.
물론, https:// 프로토콜을 사용하여 SSL 로 서버단 프로그램을 구현해야 되겠구요.
이외에 i-Pin 을 이용한 방법을 사용할 수도 있어야 합니다만..
여기서는 클라이언트단의 주민번호 기준 만 나이 체크를 하는 부분입니다.
isUnderAge 함수는 input 태그에 입력된 값이 만 나이 기준으로 파라미터값 미만인지 점검.
만 14세, 만 19세 등의 기준으로 체크 가능.
input 태그의 onBlur 에 isUnderAge(14) 대신에 if(isUnderAge(14)); 이 필요할 수도..
onBlur 시의 오류를 무시하고 form 을 사용하려고 할때,
chkValid 함수에 isUnderAge 함수를 다시 한번 입력.
chkAge 함수는 파라미터가 주민번호일때 내국인/외국인을 구분해서 만 나이를 점검.
isNumber6 과 isNumber7 함수는 input 태그에 입력된 값이 숫자로 6개 또는 7개인지를 점검.
<form name="frmBasic">
<input name="parentUserNo1" value="123456" onBlur="isUnderAge(14)" maxLength="6" />
<input name="parentUserNo2" value="7890123" onBlur="isUnderAge(14)" maxLength="7" />
</form>
<script>
function isUnderAge(n){
var f = document.frmBasic;
var v1 = f.parentUserNo1.value;
var v2 = f.parentUserNo2.value;
if(isNumber6(v1) && isNumber7(v2)){ // 아직 입력 중일 때는 만 나이를 체크할 수가 없고, 13 자리가 모두 차야 합니다
if(chkAge(v1+v2) < n){ alert('만 나이로 '+n+' 세 미만입니다. '); return false; }
else return true;
}else return false;
}
function isNumber6(v){ return /^[0-9]{6}$/.test(v); } // 공백이 있어도 안 됩니다만..
function isNumber7(v){ return /^[0-9]{7}$/.test(v); }
function chkAge(s){ // s 은 13자리 주민번호
var v1 = Number(s.substring(0,2));
var v2 = Number(s.substring(6,7));
var vy = (v2==1 || v2==2 || v2==5 || v2==6) ? 1900 +v1 : ((v2==3 || v2==4 || v2==7 || v2==8) ? 2000 +v1 : 0);
var vm = Number(s.substring(2,4));
var vd = Number(s.substring(4,6));
var today = new Date();
var thisYear = today.getYear();
var thisMonth = today.getMonth()+1; // Date 를 사용할때 getMonth 는 0 이 1월이므로 1을 더한다
var thisDay = today.getDate();
var dy = thisYear - vy; // 년차
var dmd = (thisMonth - vm) *100 + (thisDay - vd); // 단순 비교이므로, 월에 30을 곱할 필요 없음
return dmd>=0 ? dy -1 : dy; // 생일이 지나지 않았으면 년차에서 1년을 제하고, 지났으면 년차값이 만 나이
}
function chkValid(){
var f = document.frmBasic;
if(!isUnderAge(14)) return false; // 이 부분 앞에서 주민번호 입력이 정확한지 체크하는 로직은 따로 만들어야 겠죠.
return true;
}
</script>
'컴퓨터 이야기 > 프로그래밍' 카테고리의 다른 글
Eclipse Helios v3.6.1, Font Settings 이클립스 폰트 설정 (0) | 2010.12.23 |
---|---|
Eclipse Helios 버전용 Subversion 플러그인, Tomcat 플러그인 설치 (1) | 2010.12.22 |
IE가 웹 세상의 전부는 아니다, 웹표준가이드 HTML5+CSS3 (4) | 2010.12.11 |
에디트 플러스 에디터로 중국어 간체 GB2312 936 코드 작업 (1) | 2010.11.25 |
이클립스 설정, 텍스트 파일 문자셋 인코딩 (한글 처리) (0) | 2010.11.24 |