티스토리 뷰

function check_juminno(juminno) {
	if(juminno=="" || juminno==null || juminno.length!=13) {
		alert("주민등록번호를 적어주세요.");
		document.form1.jumin_num.value="";
			document.form1.jumin_num.focus();
			return false;
		}
		var jumin1 = juminno.substr(0,6);
		var jumin2 = juminno.substr(6,7);
		var yy		   = jumin1.substr(0,2);		// 년도
		var mm	 = jumin1.substr(2,2);		// 월
		var dd	 = jumin1.substr(4,2);		// 일
		var genda  = jumin2.substr(0,1);		// 성별
		var msg, ss, cc;

		// 숫자가 아닌 것을 입력한 경우
		if (!isNumeric(jumin1)) {
			alert("주민등록번호 앞자리를 숫자로 입력하세요.");
			document.form1.jumin_num.value="";
			document.form1.jumin_num.focus();
			return false;
		}
		// 길이가 6이 아닌 경우
		if (jumin1.length != 6) {
			alert("주민등록번호 앞자리를 다시 입력하세요.");
			document.form1.jumin_num.value="";
			document.form1.jumin_num.focus();
			return false;
		}
		
		// 첫번째 자료에서 연월일(YYMMDD) 형식 중 기본 구성 검사
		if (yy < "00" || yy > "99" ||
			mm < "01" || mm > "12" ||
			dd < "01" || dd > "31")
		{
			alert("주민등록번호 앞자리를 다시 입력하세요.");
			document.form1.jumin_num.value="";
			document.form1.jumin_num.focus();
			return false;
		}
		// 숫자가 아닌 것을 입력한 경우
		if (!isNumeric(jumin2)) {
			alert("주민등록번호 뒷자리를 숫자로 입력하세요.");
			document.form1.jumin_num.value="";
			document.form1.jumin_num.focus();
			return false;
		}
		// 길이가 7이 아닌 경우
		if (jumin2.length != 7) {
			alert("주민등록번호 뒷자리를 다시 입력하세요.");
			document.form1.jumin_num.value="";
			document.form1.jumin_num.focus();
			return false;
		}
		
		// 성별부분이 1 ~ 4 가 아닌 경우
		if (genda < "1" || genda > "4") {
			alert("주민등록번호 뒷자리를 다시 입력하세요.");
			document.form1.jumin_num.value="";
			document.form1.jumin_num.focus();
			return false;
		}
		// 연도 계산 - 1 또는 2: 1900년대, 3 또는 4: 2000년대
		cc = (genda == "1" || genda == "2") ? "19" : "20";
		// 첫번째 자료에서 연월일(YYMMDD) 형식 중 날짜 형식 검사
		if (isYYYYMMDD(parseInt(cc+yy), parseInt(mm), parseInt(dd)) == false) {
			alert("주민등록번호 앞자리를 다시 입력하세요.");
			document.form1.jumin_num.value="";
			document.form1.jumin_num.focus();
			return false;
		}
		// Check Digit 검사
		if (!isSSN(jumin1, jumin2)) {
			alert("입력한 주민등록번호를 검토한 후, 다시 입력하세요.");
			document.form1.jumin_num.value="";
			document.form1.jumin_num.focus();
			return false;
		}
		return true;
}

function isYYYYMMDD(y, m, d) {
	switch (m) {
		case 2: // 2월의 경우
			if (d > 29) return false;
			if (d == 29) {
				// 2월 29의 경우 당해가 윤년인지를 확인
				if ((y % 4 != 0) || (y % 100 == 0) && (y % 400 != 0))
					return false;
				}
			break;
		case 4: // 작은 달의 경우
		case 6:
		case 9:
		case 11:
			if (d == 31) return false;
	}
	// 큰 달의 경우
	return true;
}

function isNumeric(s) {
	for (i=0; i<s.length; i++) {
		c = s.substr(i, 1);
		if (c < "0" || c > "9") return false;
	}
	return true;
}

function isSSN(s1, s2) {
	n = 2;
	sum = 0;
	for (i=0; i<s1.length; i++)
		sum += parseInt(s1.substr(i, 1)) * n++;
	for (i=0; i<s2.length-1; i++) {
		sum += parseInt(s2.substr(i, 1)) * n++;
		if (n == 10) n = 2;
	}
	c = 11 - sum % 11;
	if (c == 11) c = 1;
	if (c == 10) c = 0;
	if (c != parseInt(s2.substr(6, 1))) return false;
	else return true;
} 


'IT 관련 > FrontEnd' 카테고리의 다른 글

커서모양 :: CURSOR  (0) 2009.03.26
class 선택 :: getElementByClass  (0) 2009.03.15
메타태그  (0) 2009.03.12
TAG :: FORM  (0) 2009.03.11
TAG :: Table  (0) 2009.03.11
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함