/** * 폼의 유효성을 검사한다. * @param 1 : obj : 폼객체 */ function validateForm(obj) { var objForm = obj; var error = 0; var x = objForm.elements; var startdate, enddate; for (var i = 0; i < x.length; i++) { if(!x[i].disabled){ //필수항목 체크 if (x[i].getAttribute("required") && !x[i].value) { alert("필수항목을 확인하세요."); //alert(x[i].name); //if(x[i].getAttribute("tagName") == "SELECT" || x[i].getAttribute("tagName") == "select") x[i].focus(); error = 1; return false; } //글자수 제한 체크 if (x[i].getAttribute("maxlen")) { if(!fc_chk_byte(x[i], x[i].getAttribute("maxlen"), 0, "max")){ error = 1; x[i].focus(); return false; } } //동일 글자수 if (x[i].getAttribute("equallen")) { if(!fc_chk_byte(x[i], x[i].getAttribute("equallen"), 0, "equal")){ error = 1; x[i].focus(); return false; } } //사이수 if (x[i].getAttribute("betweenlen")) { if(!fc_chk_byte(x[i], 20, x[i].getAttribute("betweenlen"), "between")){ error = 1; x[i].focus(); return false; } } //이메일 체크 if (x[i].getAttribute("txttype")) { if(x[i].getAttribute("txttype")=="email"){ if(!isValidEmailAddress(x[i])){ x[i].focus(); error = 1; return false; } } if(x[i].getAttribute("txttype")=="numeric"){ if(!numberCheck(x[i])){ x[i].focus(); error = 1; return false; } } if(x[i].getAttribute("txttype")=="jumin"){ if(!numberCheck(x[i])){ x[i].focus(); error = 1; return false; } else { if(fc_chk_byte(x[i], 13)){ if(!isValidResNo_InputChecker(x[i])){ x[i].focus(); error = 1; return false; } } else { alert("주민번호는 13자리입니다."); x[i].focus(); } } } } } } if (error == 0) { return true; } } /** * 글자수를 제한제한 * @param 1 : objFormValue : 글자수를 제한한 폼값 * @param 2 : objFormMax : 입력가능한 최대글자수 */ function fc_chk_byte(objFormValue, objFormMax, objFormMin, equal){ var ls_str = objFormValue.value; // 이벤트가 일어난 컨트롤의 value 값 var li_str_len = ls_str.length; // 전체길이 // 변수초기화 var li_max = objFormMax; // 제한할 글자수 크기 var li_min = objFormMin; var i = 0; // for문에 사용 var li_byte = 0; // 한글일경우는 2 그밗에는 1을 더함 var li_len = 0; // substring하기 위해서 사용 var ls_one_char = ""; // 한글자씩 검사한다 var ls_str2 = ""; // 글자수를 초과하면 제한할수 글자전까지만 보여준다. for(i=0; i< li_str_len; i++){ // 한글자추출 ls_one_char = ls_str.charAt(i); if (escape(ls_one_char).length > 4){ // 한글이면 2를 더한다. li_byte += 2; } else { // 그밗의 경우는 1을 더한다. li_byte++; } // 전체 크기가 li_max를 넘지않으면 if(li_byte <= li_max){ li_len = i + 1; } } if(equal=="max"){ // 전체길이를 초과하면 if(li_byte > li_max){ alert( li_max + " 글자를 초과 입력할수 없습니다. 초과된 내용은 자동으로 삭제 됩니다. "); ls_str2 = ls_str.substr(0, li_len); objFormValue.value = ls_str2; return false; } } else if(equal=="equal"){ // 전체길이가 같으면 if(li_byte != li_max){ alert( li_max + "글자이여야 합니다."); return false; } } else if(equal=="between"){ if(li_byte >= li_min && li_byte <= li_max){ return true; } else { alert( li_min + "글자 이상이고 "+ li_max + "글자 이하여야합니다."); return false; } } return true; } /** * 이메일 주소가 유효한지 알아 본다 * @param 1 : emailValue : 이메일 폼값 * */ function isValidEmailAddress(emailValue){ var ValidFlag = false; var atCount = 0 var SpecialFlag = false; var BadFlag = true; if(/^[_0-9a-zA-Z-]+(\.[_0-9a-zA-Z-]+)*@[0-9a-zA-Z-]+(\.)+([0-9a-zA-Z-]+)([\.0-9a-zA-Z-])*$/.test(emailValue.value) == false) { BadFlag = true; } else{ if ( emailValue.value.length > 0 && emailValue.value.indexOf("@") > 0 && emailValue.value.indexOf(".") > 0 ) { for( var atLoop=1; atLoop<=emailValue.value.length; atLoop++ ) { var atChr = emailValue.value.substring( atLoop, atLoop+1 ) if ( atChr == "@" ) atCount = atCount + 1 if ( (atChr >= 32) && (atChr <= 44) ) SpecialFlag = true if ( (atChr == 47) || (atChr == 96) || (atChr >= 123) ) SpecialFlag = true if ( (atChr >= 58) && (atChr <= 63) ) SpecialFlag = true if ( (atChr >= 91) && (atChr <= 94) ) SpecialFlag = true if ( atChr == "," ) SpecialFlag = true } if ( ( atCount == 1 ) && (SpecialFlag == false ) ) { BadFlag = false; var tAry1 = emailValue.value.split("@"); var UserName = tAry1[0] var DomainName = tAry1[1] if ( (UserName.length <= 0 ) || (DomainName.length <= 0 ) ) BadFlag = true if ( DomainName.substring( 1, 2 ) == "." ) BadFlag = true if ( DomainName.substring( DomainName.length-1, DomainName.length) == "." ) BadFlag = true ValidFlag = true } } } if ( BadFlag == true ){ alert("유효하지 않은 이메일 입니다."); ValidFlag = false } return ValidFlag } function isValidDate(startdate, enddate){ if(startdate.value>enddate.value){ alert("시작일이 종료일보다 크면 안됩니다."); startdate.value=""; enddate.value=""; return false; } return true; } /** * 숫자만 입력할수있게한다. * @param 1 : objFormValue : 폼값 * */ function numberCheck(objFormValue) { if (isNaN(objFormValue.value) || objFormValue.value == "") { alert("숫자만 입력하세요."); return false; } return true; } /** * 날짜입력란에 더블 클릭하면 초기화 를 시킨다. * @param 1 : kind : 'start' || 'end' * */ function datereset(kind){ var objForm = document.oForm; if(kind=="start"){ objForm.start_date.value=""; } else if(kind=="end"){ objForm.end_date.value=""; } } /** * 올바른 주민번호 문자열인지를 반환한다. * * @param lm_sStr 문자열 * @return 올바른 주민번호 문자열이면 true 아니면 false */ function isValidResNo_InputChecker(u_jumin) { lm_sStr = u_jumin.value; var isValid = true; // 우리나라 주민번호 유효성 체크 var sum = 0; for (var i=0; i<12; i++) { m = (i+2)%10; if (i > 7) m += 2; sum += eval(lm_sStr.charAt(i))*m; } var chkNum = (11 - sum%11)%10; if (chkNum != eval(lm_sStr.charAt(12))) { isValid = false; } // 우리나라 주민번호가 유효하지 않은 경우에만, // 외국인 주민번호 유효성 체크 if (!isValid) { isValid = true; var sum=0; var odd=0; buf = new Array(13); for(i=0; i<13; i++) { buf[i]=parseInt(lm_sStr.charAt(i)); } odd = buf[7]*10 + buf[8]; if(odd%2 != 0) { isValid = false; } if( (buf[11]!=6) && (buf[11]!=7) && (buf[11]!=8) && (buf[11]!=9) ) { isValid = 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]) { isValid = false; } } if(!isValid){ alert("주민번호가 유효하지 않습니다."); } return isValid; }