PageSourceSearch

https://oscom.co.kr/js/wrest.js?ver=2304171

js oscom.co.kr collected 2026-09-30 04:56:52 UTC 11,096 bytes, 371 lines download raw bytes

1var wrestMsg = "";
2var wrestFld = null;
3var wrestFldDefaultColor = "";
4//var wrestFldBackColor = "#ff3061";
5
6// subject 속성값을 얻어 return, 없으면 tag의 name을 넘김
7function wrestItemname(fld)
8{
9    //return fld.getAttribute("title") ? fld.getAttribute("title") : ( fld.getAttribute("alt") ? fld.getAttribute("alt") : fld.name );
10    var id = fld.getAttribute("id");
11    var labels = document.getElementsByTagName("label");
12    var el = null;
13
14    for(i=0; i<labels.length; i++) {
15        if(id == labels[i].htmlFor) {
16            el = labels[i];
17            break;
18        }
19    }
20
21    if(el != null) {
22        var text =  el.innerHTML.replace(/[<].*[>].*[<]\/+.*[>]/gi, "");
23
24        if(text == '') {
25            return fld.getAttribute("title") ? fld.getAttribute("title") : ( fld.getAttribute("placeholder") ? fld.getAttribute("placeholder") : fld.name );
26        } else {
27            return text;
28        }
29    } else {
30        return fld.getAttribute("title") ? fld.getAttribute("title") : ( fld.getAttribute("placeholder") ? fld.getAttribute("placeholder") : fld.name );
31    }
32}
33
34// 양쪽 공백 없애기
35function wrestTrim(fld)
36{
37    var pattern = /(^\s+)|(\s+$)/g; // \s 공백 문자
38    return fld.value.replace(pattern, "");
39}
40
41// 필수 입력 검사
42function wrestRequired(fld)
43{
44    if (wrestTrim(fld) == "") {
45        if (wrestFld == null) {
46            // 셀렉트박스일 경우에도 필수 선택 검사합니다.
47            wrestMsg = wrestItemname(fld) + " : 필수 "+(fld.type=="select-one"?"선택":"입력")+"입니다.\n";
48            wrestFld = fld;
49        }
50    }
51}
52
53// 김선용 2006.3 - 전화번호(휴대폰) 형식 검사 : 123-123(4)-5678
54function wrestTelNum(fld)
55{
56    if (!wrestTrim(fld)) return;
57
58    var pattern = /^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$/;
59    if(!pattern.test(fld.value)){
60        if(wrestFld == null){
61            wrestMsg = wrestItemname(fld)+" : 전화번호 형식이 올바르지 않습니다.\n\n하이픈(-)을 포함하여 입력하세요.\n";
62            wrestFld = fld;
63            fld.select();
64        }
65    }
66}
67
68// 이메일주소 형식 검사
69function wrestEmail(fld)
70{
71    if (!wrestTrim(fld)) return;
72
73    //var pattern = /(\S+)@(\S+)\.(\S+)/; 이메일주소에 한글 사용시
74    var pattern = /([0-9a-zA-Z_-]+)@([0-9a-zA-Z_-]+)\.([0-9a-zA-Z_-]+)/;
75    if (!pattern.test(fld.value)) {
76        if (wrestFld == null) {
77            wrestMsg = wrestItemname(fld) + " : 이메일주소 형식이 아닙니다.\n";
78            wrestFld = fld;
79        }
80    }
81}
82
83// 한글인지 검사 (자음, 모음 조합된 한글만 가능)
84function wrestHangul(fld)
85{
86    if (!wrestTrim(fld)) return;
87
88    //var pattern = /([^가-힣\x20])/i;
89    var pattern = /([^가-힣\x20])/;
90
91    if (pattern.test(fld.value)) {
92        if (wrestFld == null) {
93            wrestMsg = wrestItemname(fld) + ' : 한글이 아닙니다. (자음, 모음 조합된 한글만 가능)\n';
94            wrestFld = fld;
95        }
96    }
97}
98
99// 한글인지 검사2 (자음, 모음만 있는 한글도 가능)
100function wrestHangul2(fld)
101{
102    if (!wrestTrim(fld)) return;
103
104    var pattern = /([^가-힣ㄱ-ㅎㅏ-ㅣ\x20])/i;
105    //var pattern = /([^가-힣ㄱ-ㅎㅏ-ㅣ\x20])/;
106
107    if (pattern.test(fld.value)) {
108        if (wrestFld == null) {
109            wrestMsg = wrestItemname(fld) + ' : 한글이 아닙니다.\n';
110            wrestFld = fld;
111        }
112    }
113}
114
115// 한글,영문,숫자인지 검사3
116function wrestHangulAlNum(fld)
117{
118    if (!wrestTrim(fld)) return;
119
120    var pattern = /([^가-힣\x20^a-z^A-Z^0-9])/i;
121
122    if (pattern.test(fld.value)) {
123        if (wrestFld == null) {
124            wrestMsg = wrestItemname(fld) + ' : 한글, 영문, 숫자가 아닙니다.\n';
125            wrestFld = fld;
126        }
127    }
128}
129
130// 한글,영문 인지 검사
131function wrestHangulAlpha(fld)
132{
133    if (!wrestTrim(fld)) return;
134
135    var pattern = /([^가-힣\x20^a-z^A-Z])/i;
136
137    if (pattern.test(fld.value)) {
138        if (wrestFld == null) {
139            wrestMsg = wrestItemname(fld) + ' : 한글, 영문이 아닙니다.\n';
140            wrestFld = fld;
141        }
142    }
143}
144
145// 숫자인지검사
146// 배부른꿀꿀이님 추가 (http://dasir.com) 2003-06-24
147function wrestNumeric(fld)
148{
149    if (fld.value.length > 0) {
150        for (i = 0; i < fld.value.length; i++) {
151            if (fld.value.charAt(i) < '0' || fld.value.charAt(i) > '9') {
152                wrestMsg = wrestItemname(fld) + " : 숫자가 아닙니다.\n";
153                wrestFld = fld;
154            }
155        }
156    }
157}
158
159// 영문자 검사
160// 배부른꿀꿀이님 추가 (http://dasir.com) 2003-06-24
161function wrestAlpha(fld)
162{
163    if (!wrestTrim(fld)) return;
164
165    var pattern = /(^[a-zA-Z]+$)/;
166
167    if (!pattern.test(fld.value)) {
168        if (wrestFld == null) {
169            wrestMsg = wrestItemname(fld) + " : 영문이 아닙니다.\n";
170            wrestFld = fld;
171        }
172    }
173}
174
175// 영문자와 숫자 검사
176// 배부른꿀꿀이님 추가 (http://dasir.com) 2003-07-07
177function wrestAlNum(fld)
178{
179   if (!wrestTrim(fld)) return;
180
181   var pattern = /(^[a-zA-Z0-9]+$)/;
182
183   if (!pattern.test(fld.value)) {
184       if (wrestFld == null) {
185           wrestMsg = wrestItemname(fld) + " : 영문 또는 숫자가 아닙니다.\n";
186           wrestFld = fld;
187       }
188   }
189}
190
191// 영문자와 숫자 그리고 _ 검사
192function wrestAlNum_(fld)
193{
194   if (!wrestTrim(fld)) return;
195
196   var pattern = /(^[a-zA-Z0-9\_]+$)/;
197
198   if (!pattern.test(fld.value)) {
199       if (wrestFld == null) {
200           wrestMsg = wrestItemname(fld) + " : 영문, 숫자, _ 가 아닙니다.\n";
201           wrestFld = fld;
202       }
203   }
204}
205
206// 최소 길이 검사
207function wrestMinLength(fld)
208{
209    if (!wrestTrim(fld)) return;
210
211    var minlength = fld.getAttribute("minlength");
212
213    if (wrestFld == null) {
214        if (fld.value.length < parseInt(minlength)) {
215            wrestMsg = wrestItemname(fld) + " : 최소 "+minlength+"글자 이상 입력하세요.\n";
216            wrestFld = fld;
217        }
218    }
219}
220
221// 이미지 확장자
222function wrestImgExt(fld)
223{
224    if (!wrestTrim(fld)) return;
225
226    var pattern = /\.(gif|jpg|png)$/i; // jpeg 는 제외
227    if(!pattern.test(fld.value)){
228        if(wrestFld == null){
229            wrestMsg = wrestItemname(fld)+" : 이미지 파일이 아닙니다.\n.gif .jpg .png 파일만 가능합니다.\n";
230            wrestFld = fld;
231            fld.select();
232        }
233    }
234}
235
236// 확장자
237function wrestExtension(fld, css)
238{
239    if (!wrestTrim(fld)) return;
240
241    var str = css.split("="); // ext=?? <-- str[1]
242    var src = fld.value.split(".");
243    var ext = src[src.length - 1];
244
245    if (wrestFld == null) {
246        if (ext.toLowerCase() < str[1].toLowerCase()) {
247            wrestMsg = wrestItemname(fld) + " : ."+str[1]+" 파일만 가능합니다.\n";
248            wrestFld = fld;
249        }
250    }
251}
252
253// 공백 검사후 공백을 "" 로 변환
254function wrestNospace(fld)
255{
256    var pattern = /(\s)/g; // \s 공백 문자
257
258    if (pattern.test(fld.value)) {
259        if (wrestFld == null) {
260            wrestMsg = wrestItemname(fld) + " : 공백이 없어야 합니다.\n";
261            wrestFld = fld;
262        }
263    }
264}
265
266// submit 할 때 속성을 검사한다.
267function wrestSubmit()
268{
269    wrestMsg = "";
270    wrestFld = null;
271
272    var attr = null;
273
274    // 해당폼에 대한 요소의 개수만큼 돌려라
275    for (var i=0; i<this.elements.length; i++) {
276        var el = this.elements[i];
277
278        // Input tag 의 type 이 text, file, password 일때만
279        // 셀렉트 박스일때도 필수 선택 검사합니다. select-one
280        if (el.type=="text" || el.type=="hidden" || el.type=="file" || el.type=="password" || el.type=="select-one" || el.type=="textarea") {
281            if (el.getAttribute("required") != null) {
282                wrestRequired(el);
283            }
284
285            if (el.getAttribute("minlength") != null) {
286                wrestMinLength(el);
287            }
288
289            var array_css = el.className.split(" "); // class 를 공백으로 나눔
290
291            el.style.backgroundColor = wrestFldDefaultColor;
292
293            // 배열의 길이만큼 돌려라
294            for (var k=0; k<array_css.length; k++) {
295                var css = array_css[k];
296                switch (css) {
297                    case "required"     : wrestRequired(el); break;
298                    case "trim"         : wrestTrim(el); break;
299                    case "email"        : wrestEmail(el); break;
300                    case "hangul"       : wrestHangul(el); break;
301                    case "hangul2"      : wrestHangul2(el); break;
302                    case "hangulalpha"  : wrestHangulAlpha(el); break;
303                    case "hangulalnum"  : wrestHangulAlNum(el); break;
304                    case "nospace"      : wrestNospace(el); break;
305                    case "numeric"      : wrestNumeric(el); break;
306                    case "alpha"        : wrestAlpha(el); break;
307                    case "alnum"        : wrestAlNum(el); break;
308                    case "alnum_"       : wrestAlNum_(el); break;
309                    case "telnum"       : wrestTelNum(el); break; // 김선용 2006.3 - 전화번호 형식 검사
310                    case "imgext"       : wrestImgExt(el); break;
311                    default :
312                        if (/^extension\=/.test(css)) {
313                            wrestExtension(el, css); break;
314                        }
315                } // switch (css)
316            } // for (k)
317        } // if (el)
318    } // for (i)
319
320    // 필드가 null 이 아니라면 오류메세지 출력후 포커스를 해당 오류 필드로 옮김
321    // 오류 필드는 배경색상을 바꾼다.
322    if (wrestFld != null) {
323        // 경고메세지 출력
324        alert(wrestMsg);
325
326        if (wrestFld.style.display != "none") {
327            var id = wrestFld.getAttribute("id");
328
329            // 오류메세지를 위한 element 추가
330            var msg_el = document.createElement("strong");
331            msg_el.id = "msg_"+id;
332            msg_el.className = "msg_sound_only";
333            msg_el.innerHTML = wrestMsg;
334            wrestFld.parentNode.insertBefore(msg_el, wrestFld);
335
336            var new_href = document.location.href.replace(/#msg.+$/, "")+"#msg_"+id;
337
338            document.location.href = new_href;
339
340            //wrestFld.style.backgroundColor = wrestFldBackColor;
341            if (typeof(wrestFld.select) != "undefined")
342                wrestFld.select();
343            wrestFld.focus();
344        }
345        return false;
346    }
347
348    if (this.oldsubmit && this.oldsubmit() == false)
349        return false;
350
351    return true;
352}
353
354
355// 초기에 onsubmit을 가로채도록 한다.
356function wrestInitialized()
357{
358    for (var i = 0; i < document.forms.length; i++) {
359        // onsubmit 이벤트가 있다면 저장해 놓는다.
360        if (document.forms[i].onsubmit) {
361            document.forms[i].oldsubmit = document.forms[i].onsubmit;
362        }
363        document.forms[i].onsubmit = wrestSubmit;
364    }
365}
366
367// 폼필드 자동검사
368$(document).ready(function(){
369    // onload
370    wrestInitialized();
371});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.