From 299a8a721b0677888f397dc5b845e11032d41dd8 Mon Sep 17 00:00:00 2001 From: whitedot Date: Mon, 17 Dec 2012 14:18:11 +0900 Subject: [PATCH] =?UTF-8?q?wrest.js=20=EB=B3=80=EA=B2=BD=20=EB=B0=8F=20?= =?UTF-8?q?=EC=9D=BC=EB=B6=80=20=EC=83=89=EC=83=81=EB=8C=80=EB=B9=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- css/adm.css | 12 +- js/wrest.js | 721 ++++++++++++++++++++++------------------------------ 2 files changed, 309 insertions(+), 424 deletions(-) diff --git a/css/adm.css b/css/adm.css index 129dc5069..c0efd7dbf 100644 --- a/css/adm.css +++ b/css/adm.css @@ -34,7 +34,7 @@ footer {margin:20px 0;padding:5px 20px;border-top:1px solid #d0d6d8} footer p {color:#576a71} /* 헤딩 */ -h1 {margin-bottom:20px;font-family:"verdana","dotum";letter-spacing:-0.1em} +h1 {margin-bottom:20px;color:#515b5f;font-family:"verdana","dotum";letter-spacing:-0.1em} /* GNB */ #gnb {position:absolute;top:110px;left:20px;width:180px} @@ -75,19 +75,21 @@ fieldset button, .fieldset_submit {padding:0 15px;height:23px;border:0;backgroun fieldset button:focus, .fieldset_submit:focus {padding:0 15px;height:23px;border:0;background:#555;color:#fff;font-size:1em;line-height:2.1em;vertical-align:middle} .readonly {background:#ff3061} -.adm_field_explain {display:block;padding:0 0 5px;color:#768f99} +/* 폼 안내글 */ +.adm_field_explain {display:block;padding:0 0 5px;color:#5b747e} .group_setting {} .group_setting_ta {display:block;padding-top:5px} +/* 폼 바로가기 */ .frm_list {margin:0 0 20px;padding:0 0 0 1px;zoom:1} .frm_list:after {display:block;visibility:hidden;clear:both;content:""} .frm_list li {float:left;margin-left:-1px;list-style:none} -.frm_list a {display:block;border:1px solid #c7cfd5;background:#fff;padding:0 7px;height:30px;color:#2e5d98;font-size:0.875em;text-decoration:none;line-height:2.3em} -.frm_list a:focus, .frm_list a:hover {background:#f6f9fa} +.frm_list a {display:block;border:1px solid #586267;background:#667379;padding:0 7px;height:30px;color:#fff;font-size:0.875em;text-decoration:none;line-height:2.3em} +.frm_list a:focus, .frm_list a:hover {background:#434f54} /* 테이블 */ table {margin-bottom:10px;width:100%;border:1px solid #d5dcdf;background:#fff} -caption {padding:10px 0 15px;color:#5b7c89;text-align:left;font-size:1em;font-weight:bold} +caption {padding:10px 0 15px;color:#2f4d59;text-align:left;font-size:1em;font-weight:bold} caption p {margin:7px 0 0;padding:0;color:#6b8088;font:0.75em normal} th, td {border-bottom:1px solid #e9ecee;font-size:0.75em} th label {display:block} diff --git a/js/wrest.js b/js/wrest.js index 470545e02..2292d212e 100644 --- a/js/wrest.js +++ b/js/wrest.js @@ -1,464 +1,347 @@ -if (typeof(WREST_JS) == 'undefined') // 한번만 실행 +var wrestMsg = ""; +var wrestFld = null; +var wrestFldDefaultColor = ""; +var wrestFldBackColor = "#FFE4E1"; + +// subject 속성값을 얻어 return, 없으면 tag의 name을 넘김 +function wrestItemname(fld) { - if (typeof g4_path == 'undefined') - alert('g4_path 변수가 선언되지 않았습니다. js/wrest.js'); + return fld.getAttribute("title") ? fld.getAttribute("title") : ( fld.getAttribute("alt") ? fld.getAttribute("alt") : fld.name ); +} - var WREST_JS = true; +// 양쪽 공백 없애기 +function wrestTrim(fld) +{ + var pattern = /(^\s+)|(\s+$)/g; // \s 공백 문자 + //(/^\s+|\s+$/g,""); + var str = fld.value.replace(pattern, ""); + return str; +} - var wrestMsg = ''; - var wrestFld = null; - //var wrestFldDefaultColor = '#FFFFFF'; - var wrestFldDefaultColor = ''; - var wrestFldBackColor = '#FFE4E1'; - var arrAttr = new Array ('required', 'trim', 'minlength', 'email', 'hangul', 'hangul2', - 'memberid', 'nospace', 'numeric', 'alpha', 'alphanumeric', - 'jumin', 'saupja', 'alphanumericunderline', 'telnumber', 'hangulalphanumeric'); - - // subject 속성값을 얻어 return, 없으면 tag의 name을 넘김 - function wrestItemname(fld) - { - //input id 값과 같은 for 값을 가진 label 을 찾아 해당 텍스트를 itemname 으로 넘겨줍니다.:지운아빠 2012-07-04 - var itemname = ''; - var id = fld.getAttribute('id'); - var labelname = document.getElementsByTagName('label'); - for(i=0;i*',''); - //itemname = labelname[i].innerTEXT; - } +// 필수 입력 검사 +function wrestRequired(fld) +{ + if (wrestTrim(fld) == "") { + if (wrestFld == null) { + // 셀렉트박스일 경우에도 필수 선택 검사합니다. + wrestMsg = wrestItemname(fld) + " : 필수 "+(fld.type=="select-one"?"선택":"입력")+"입니다.\n"; + wrestFld = fld; } - // labelname 없을 경우에 title 로 반환 - if (itemname == '') { - itemname = fld.getAttribute('title'); + } +} + +// 김선용 2006.3 - 전화번호(휴대폰) 형식 검사 : 123-123(4)-5678 +function wrestTelNum(fld) +{ + if (!wrestTrim(fld)) return; + + var pattern = /^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$/; + if(!pattern.test(fld.value)){ + if(wrestFld == null){ + wrestMsg = wrestItemname(fld)+" : 전화번호 형식이 올바르지 않습니다.\n\n하이픈(-)을 포함하여 입력하세요.\n"; + wrestFld = fld; + fld.select(); } - if (itemname != null && itemname != '') - return itemname; - else - return fld.name; } +} - // 양쪽 공백 없애기 - function wrestTrim(fld) - { - var pattern = /(^\s*)|(\s*$)/g; // \s 공백 문자 - fld.value = fld.value.replace(pattern, ""); - return fld.value; +// 이메일주소 형식 검사 +function wrestEmail(fld) +{ + if (!wrestTrim(fld)) return; + + //var pattern = /(\S+)@(\S+)\.(\S+)/; 이메일주소에 한글 사용시 + var pattern = /([0-9a-zA-Z_-]+)@([0-9a-zA-Z_-]+)\.([0-9a-zA-Z_-]+)/; + if (!pattern.test(fld.value)) { + if (wrestFld == null) { + wrestMsg = wrestItemname(fld) + " : 이메일주소 형식이 아닙니다.\n"; + wrestFld = fld; + } } +} - // 필수 입력 검사 - function wrestRequired(fld) - { - if (wrestTrim(fld) == "") - { - if (wrestFld == null) - { - // 3.30 - // 셀렉트박스일 경우에도 필수 선택 검사합니다. - wrestMsg = wrestItemname(fld) + " : 필수 "+(fld.type=="select-one"?"선택":"입력")+"입니다.\n"; +// 한글인지 검사 (자음, 모음만 있는 한글은 불가) +function wrestHangul(fld) +{ + if (!wrestTrim(fld)) return; + + var pattern = /([^가-힣\x20])/i; + + if (pattern.test(fld.value)) { + if (wrestFld == null) { + wrestMsg = wrestItemname(fld) + ' : 한글이 아닙니다. (자음, 모음만 있는 한글은 처리하지 않습니다.)\n'; + wrestFld = fld; + } + } +} + +// 한글인지 검사2 (자음, 모음만 있는 한글도 가능) +function wrestHangul2(fld) +{ + if (!wrestTrim(fld)) return; + + var pattern = /([^가-힣ㄱ-ㅎㅏ-ㅣ\x20])/i; + + if (pattern.test(fld.value)) { + if (wrestFld == null) { + wrestMsg = wrestItemname(fld) + ' : 한글이 아닙니다.\n'; + wrestFld = fld; + } + } +} + +// 한글,영문,숫자인지 검사3 +function wrestHangulAlNum(fld) +{ + if (!wrestTrim(fld)) return; + + var pattern = /([^가-힣\x20^a-z^A-Z^0-9])/i; + + if (pattern.test(fld.value)) { + if (wrestFld == null) { + wrestMsg = wrestItemname(fld) + ' : 한글, 영문, 숫자가 아닙니다.\n'; + wrestFld = fld; + } + } +} + +// 한글,영문 인지 검사 +function wrestHangulAlpha(fld) +{ + if (!wrestTrim(fld)) return; + + var pattern = /([^가-힣\x20^a-z^A-Z])/i; + + if (pattern.test(fld.value)) { + if (wrestFld == null) { + wrestMsg = wrestItemname(fld) + ' : 한글, 영문이 아닙니다.\n'; + wrestFld = fld; + } + } +} + +// 숫자인지검사 +// 배부른꿀꿀이님 추가 (http://dasir.com) 2003-06-24 +function wrestNumeric(fld) +{ + if (fld.value.length > 0) { + for (i = 0; i < fld.value.length; i++) { + if (fld.value.charAt(i) < '0' || fld.value.charAt(i) > '9') { + wrestMsg = wrestItemname(fld) + " : 숫자가 아닙니다.\n"; wrestFld = fld; } } } +} - // 최소 길이 검사 - function wrestMinlength(fld) - { - var len = fld.getAttribute("minlength"); - if (fld.value.length < len) - { - if (wrestFld == null) - { - wrestMsg = wrestItemname(fld) + " : 최소 " + len + "자 이상 입력하세요.\n"; - wrestFld = fld; - } +// 영문자 검사 +// 배부른꿀꿀이님 추가 (http://dasir.com) 2003-06-24 +function wrestAlpha(fld) +{ + if (!wrestTrim(fld)) return; + + var pattern = /(^[a-zA-Z]+$)/; + + if (!pattern.test(fld.value)) { + if (wrestFld == null) { + wrestMsg = wrestItemname(fld) + " : 영문이 아닙니다.\n"; + wrestFld = fld; } } +} - // 김선용 2006.3 - 전화번호(휴대폰) 형식 검사 : 123-123(4)-5678 - function wrestTelnumber(fld){ +// 영문자와 숫자 검사 +// 배부른꿀꿀이님 추가 (http://dasir.com) 2003-07-07 +function wrestAlNum(fld) +{ + if (!wrestTrim(fld)) return; - if (!wrestTrim(fld)) return; + var pattern = /(^[a-zA-Z0-9]+$)/; - var pattern = /^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$/; - if(!pattern.test(fld.value)){ - if(wrestFld == null){ - wrestMsg = wrestItemname(fld)+" : 전화번호 형식이 올바르지 않습니다.\n\n하이픈(-)을 포함하여 입력해 주십시오.\n"; - wrestFld = fld; - fld.select(); - } - } - } - - // 이메일주소 형식 검사 - function wrestEmail(fld) - { - if (!wrestTrim(fld)) return; - - //var pattern = /(\S+)@(\S+)\.(\S+)/; 이메일주소에 한글 사용시 - var pattern = /([0-9a-zA-Z_-]+)@([0-9a-zA-Z_-]+)\.([0-9a-zA-Z_-]+)/; - if (!pattern.test(fld.value)) - { - if (wrestFld == null) - { - wrestMsg = wrestItemname(fld) + " : 이메일주소 형식이 아닙니다.\n"; - wrestFld = fld; - } - } - } - - // 회원아이디 검사 - function wrestMemberId(fld) - { - if (!wrestTrim(fld)) return; - - var pattern = /(^([a-z0-9]+)([a-z0-9_]+$))/; - if (!pattern.test(fld.value)) - { - if (wrestFld == null) - { - wrestMsg = wrestItemname(fld) + " : 회원아이디 형식이 아닙니다.\n\n영소문자, 숫자, _ 만 가능.\n\n첫글자는 영소문자, 숫자만 가능\n"; - wrestFld = fld; - } - } - } - - // 한글인지 검사 (자음, 모음만 있는 한글은 불가) - function wrestHangul(fld) - { - if (!wrestTrim(fld)) return; - - var pattern = /([^가-힣\x20])/i; - - if (pattern.test(fld.value)) - { - if (wrestFld == null) - { - wrestMsg = wrestItemname(fld) + ' : 한글이 아닙니다. (자음, 모음만 있는 한글은 처리하지 않습니다.)\n'; - wrestFld = fld; - } - } - } - - // 한글인지 검사2 (자음, 모음만 있는 한글도 가능) - function wrestHangul2(fld) - { - if (!wrestTrim(fld)) return; - - var pattern = /([^가-힣ㄱ-ㅎㅏ-ㅣ\x20])/i; - - if (pattern.test(fld.value)) - { - if (wrestFld == null) - { - wrestMsg = wrestItemname(fld) + ' : 한글이 아닙니다.\n'; - wrestFld = fld; - } - } - } - - // 한글,영문,숫자인지 검사3 - function wrestHangulAlphaNumeric(fld) - { - if (!wrestTrim(fld)) return; - - var pattern = /([^가-힣\x20^a-z^A-Z^0-9])/i; - - if (pattern.test(fld.value)) - { - if (wrestFld == null) - { - wrestMsg = wrestItemname(fld) + ' : 한글, 영문, 숫자가 아닙니다.\n'; - wrestFld = fld; - } - } - } - - // 숫자인지검사 - // 배부른꿀꿀이님 추가 (http://dasir.com) 2003-06-24 - function wrestNumeric(fld) - { - if (fld.value.length > 0) - { - for (i = 0; i < fld.value.length; i++) - { - if (fld.value.charAt(i) < '0' || fld.value.charAt(i) > '9') - { - wrestMsg = wrestItemname(fld) + " : 숫자가 아닙니다.\n"; - wrestFld = fld; - } - } - } - } - - // 영문자 검사 - // 배부른꿀꿀이님 추가 (http://dasir.com) 2003-06-24 - function wrestAlpha(fld) - { - if (!wrestTrim(fld)) return; - - var pattern = /(^[a-zA-Z]+$)/; - if (!pattern.test(fld.value)) - { - if (wrestFld == null) - { - wrestMsg = wrestItemname(fld) + " : 영문이 아닙니다.\n"; - wrestFld = fld; - } - } - } - - // 영문자와 숫자 검사 - // 배부른꿀꿀이님 추가 (http://dasir.com) 2003-07-07 - function wrestAlphaNumeric(fld) - { - if (!wrestTrim(fld)) return; - var pattern = /(^[a-zA-Z0-9]+$)/; - if (!pattern.test(fld.value)) - { - if (wrestFld == null) - { - wrestMsg = wrestItemname(fld) + " : 영문 또는 숫자가 아닙니다.\n"; - wrestFld = fld; - } + if (!pattern.test(fld.value)) { + if (wrestFld == null) { + wrestMsg = wrestItemname(fld) + " : 영문 또는 숫자가 아닙니다.\n"; + wrestFld = fld; } - } + } +} - // 영문자와 숫자 그리고 _ 검사 - function wrestAlphaNumericUnderLine(fld) - { - if (!wrestTrim(fld)) - return; +// 영문자와 숫자 그리고 _ 검사 +function wrestAlNum_(fld) +{ + if (!wrestTrim(fld)) return; - var pattern = /(^[a-zA-Z0-9\_]+$)/; - if (!pattern.test(fld.value)) - { - if (wrestFld == null) - { - wrestMsg = wrestItemname(fld) + " : 영문, 숫자, _ 가 아닙니다.\n"; - wrestFld = fld; - } + var pattern = /(^[a-zA-Z0-9\_]+$)/; + + if (!pattern.test(fld.value)) { + if (wrestFld == null) { + wrestMsg = wrestItemname(fld) + " : 영문, 숫자, _ 가 아닙니다.\n"; + wrestFld = fld; } - } + } +} - // 주민등록번호 검사 - function wrestJumin(fld) - { - if (!wrestTrim(fld)) return; - var pattern = /(^[0-9]{13}$)/; - if (!pattern.test(fld.value)) - { - if (wrestFld == null) - { - wrestMsg = wrestItemname(fld) + " : 주민등록번호를 13자리 숫자로 입력하십시오.\n"; - wrestFld = fld; - } - } - else - { - var sum_1 = 0; - var sum_2 = 0; - var at=0; - var juminno= fld.value; - sum_1 = (juminno.charAt(0)*2)+ - (juminno.charAt(1)*3)+ - (juminno.charAt(2)*4)+ - (juminno.charAt(3)*5)+ - (juminno.charAt(4)*6)+ - (juminno.charAt(5)*7)+ - (juminno.charAt(6)*8)+ - (juminno.charAt(7)*9)+ - (juminno.charAt(8)*2)+ - (juminno.charAt(9)*3)+ - (juminno.charAt(10)*4)+ - (juminno.charAt(11)*5); - sum_2=sum_1 % 11; +// 최소 길이 검사 +function wrestMinLength(fld, css) +{ + if (!wrestTrim(fld)) return; - if (sum_2 == 0) - at = 10; - else - { - if (sum_2 == 1) - at = 11; - else - at = sum_2; - } - att = 11 - at; - // 1800 년대에 태어나신 분들은 남자, 여자의 구분이 9, 0 이라는 - // 얘기를 들은적이 있는데 그렇다면 아래의 구문은 오류이다. - // 하지만... 100살넘은 분들이 주민등록번호를 과연 입력해볼까? - if (juminno.charAt(12) != att || - juminno.substr(2,2) < '01' || - juminno.substr(2,2) > '12' || - juminno.substr(4,2) < '01' || - juminno.substr(4,2) > '31' || - juminno.charAt(6) > 4) - { - wrestMsg = wrestItemname(fld) + " : 올바른 주민등록번호가 아닙니다.\n"; - wrestFld = fld; - } + var str = css.split('='); // minlength=?? <-- str[1] + if (wrestFld == null) { + if (fld.value.length < parseInt(str[1])) { + wrestMsg = wrestItemname(fld) + " : 최소 "+str[1]+"글자 이상 입력하세요.\n"; + wrestFld = fld; } } +} - // 사업자등록번호 검사 - function wrestSaupja(fld) - { - if (!wrestTrim(fld)) return; - var pattern = /(^[0-9]{10}$)/; - if (!pattern.test(fld.value)) - { - if (wrestFld == null) - { - wrestMsg = wrestItemname(fld) + " : 사업자등록번호를 10자리 숫자로 입력하십시오.\n"; - wrestFld = fld; - } - } - else - { - var sum = 0; - var at = 0; - var att = 0; - var saupjano= fld.value; - sum = (saupjano.charAt(0)*1)+ - (saupjano.charAt(1)*3)+ - (saupjano.charAt(2)*7)+ - (saupjano.charAt(3)*1)+ - (saupjano.charAt(4)*3)+ - (saupjano.charAt(5)*7)+ - (saupjano.charAt(6)*1)+ - (saupjano.charAt(7)*3)+ - (saupjano.charAt(8)*5); - sum += parseInt((saupjano.charAt(8)*5)/10); - at = sum % 10; - if (at != 0) - att = 10 - at; - - if (saupjano.charAt(9) != att) - { - wrestMsg = wrestItemname(fld) + " : 올바른 사업자등록번호가 아닙니다.\n"; - wrestFld = fld; - } +// 이미지 확장자 +function wrestImgExt(fld) +{ + if (!wrestTrim(fld)) return; + var pattern = /\.(gif|jpg|png)$/i; // jpeg 는 제외 + if(!pattern.test(fld.value)){ + if(wrestFld == null){ + wrestMsg = wrestItemname(fld)+" : 이미지 파일이 아닙니다.\n.gif .jpg .png 파일만 가능합니다.\n"; + wrestFld = fld; + fld.select(); } } +} - // 공백 검사후 공백을 "" 로 변환 - function wrestNospace(fld) - { - var pattern = /(\s)/g; // \s 공백 문자 - if (pattern.test(fld.value)) - { - if (wrestFld == null) - { - wrestMsg = wrestItemname(fld) + " : 공백이 없어야 합니다.\n"; - wrestFld = fld; - } +// 확장자 +function wrestExtension(fld, css) +{ + if (!wrestTrim(fld)) return; + + var str = css.split('='); // ext=?? <-- str[1] + var src = fld.value.split('.'); + var ext = src[src.length - 1]; + + if (wrestFld == null) { + if (ext.toLowerCase() < str[1].toLowerCase()) { + wrestMsg = wrestItemname(fld) + " : ."+str[1]+" 파일만 가능합니다.\n"; + wrestFld = fld; } } +} - // submit 할 때 속성을 검사한다. - function wrestSubmit() - { - wrestMsg = ""; - wrestFld = null; +// 공백 검사후 공백을 "" 로 변환 +function wrestNospace(fld) +{ + var pattern = /(\s)/g; // \s 공백 문자 - var attr = null; + if (pattern.test(fld.value)) { + if (wrestFld == null) { + wrestMsg = wrestItemname(fld) + " : 공백이 없어야 합니다.\n"; + wrestFld = fld; + } + } +} - // 해당폼에 대한 요소의 갯수만큼 돌려라 - for (var i = 0; i < this.elements.length; i++) - { - // Input tag 의 type 이 text, file, password 일때만 - // 3.30 - // 셀렉트 박스일때도 필수 선택 검사합니다. select-one - if (this.elements[i].type == "text" || - this.elements[i].type == "file" || - this.elements[i].type == "password" || - this.elements[i].type == "select-one" || - this.elements[i].type == "textarea") - { - // 배열의 길이만큼 돌려라 - for (var j = 0; j < arrAttr.length; j++) - { - // 배열에 정의한 속성과 비교해서 속성이 있거나 값이 있다면 - if (this.elements[i].getAttribute(arrAttr[j]) != null) - { - /* - // 기본 색상으로 돌려놓고 - if (this.elements[i].getAttribute("required") != null) { - this.elements[i].style.backgroundColor = wrestFldDefaultColor; +// submit 할 때 속성을 검사한다. +function wrestSubmit() +{ + wrestMsg = ""; + wrestFld = null; + + var attr = null; + + // 해당폼에 대한 요소의 갯수만큼 돌려라 + for (var i=0; i