PageSourceSearch

https://aisociety.kr/js/wrest.js

js aisociety.kr collected 2026-10-06 15:25:18 UTC 15,991 bytes, 450 lines download raw bytes

1if (typeof(WREST_JS) == 'undefined') // 한번만 실행
2{
3    if (typeof g4_path == 'undefined')
4        alert('g4_path 변수가 선언되지 않았습니다. js/wrest.js');
5
6    var WREST_JS = true;
7
8    var wrestMsg = '';
9    var wrestFld = null;
10    //var wrestFldDefaultColor = '#FFFFFF'; 
11    var wrestFldDefaultColor = ''; 
12    var wrestFldBackColor = '#FFE4E1'; 
13    var arrAttr  = new Array ('required', 'trim', 'minlength', 'email', 'hangul', 'hangul2', 
14                              'memberid', 'nospace', 'numeric', 'alpha', 'alphanumeric', 
15                              'jumin', 'saupja', 'alphanumericunderline', 'telnumber', 'hangulalphanumeric');
16
17    // subject 속성값을 얻어 return, 없으면 tag의 name을 넘김
18    function wrestItemname(fld)
19    {
20        var itemname = fld.getAttribute("itemname");
21        if (itemname != null && itemname != "")
22            return itemname;
23        else
24            return fld.name;
25    }
26
27    // 양쪽 공백 없애기
28    function wrestTrim(fld) 
29    {
30        var pattern = /(^\s*)|(\s*$)/g; // \s 공백 문자
31        fld.value = fld.value.replace(pattern, "");
32        return fld.value;
33    }
34
35    // 필수 입력 검사
36    function wrestRequired(fld)
37    {
38        if (wrestTrim(fld) == "") 
39        {
40            if (wrestFld == null) 
41            {
42                // 3.30
43                // 셀렉트박스일 경우에도 필수 선택 검사합니다.
44                wrestMsg = wrestItemname(fld) + " : 필수 "+(fld.type=="select-one"?"선택":"입력")+"입니다.\n";
45                wrestFld = fld;
46            }
47        }
48    }
49
50    // 최소 길이 검사
51    function wrestMinlength(fld)
52    {
53        var len = fld.getAttribute("minlength");
54        if (fld.value.length < len) 
55        {
56            if (wrestFld == null) 
57            {
58                wrestMsg = wrestItemname(fld) + " :  최소 " + len + "자 이상 입력하세요.\n";
59                wrestFld = fld;
60            }
61        }
62    }
63
64    // 김선용 2006.3 - 전화번호(휴대폰) 형식 검사 : 123-123(4)-5678
65	function wrestTelnumber(fld){
66
67		if (!wrestTrim(fld)) return;
68
69		var pattern = /^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$/;
70		if(!pattern.test(fld.value)){ 
71            if(wrestFld == null){
72				wrestMsg = wrestItemname(fld)+" : 전화번호 형식이 올바르지 않습니다.\n\n하이픈(-)을 포함하여 입력해 주십시오.\n";
73                wrestFld = fld;
74				fld.select();
75            }
76		}
77	}
78
79    // 이메일주소 형식 검사
80    function wrestEmail(fld) 
81    {
82        if (!wrestTrim(fld)) return;
83
84        //var pattern = /(\S+)@(\S+)\.(\S+)/; 이메일주소에 한글 사용시
85        var pattern = /([0-9a-zA-Z_-]+)@([0-9a-zA-Z_-]+)\.([0-9a-zA-Z_-]+)/;
86        if (!pattern.test(fld.value)) 
87        {
88            if (wrestFld == null) 
89            {
90                wrestMsg = wrestItemname(fld) + " : 이메일주소 형식이 아닙니다.\n";
91                wrestFld = fld;
92            }
93        }
94    }
95
96    // 회원아이디 검사
97    function wrestMemberId(fld) 
98    {
99        if (!wrestTrim(fld)) return;
100
101        var pattern = /(^([a-z0-9]+)([a-z0-9_]+$))/;
102        if (!pattern.test(fld.value)) 
103        {
104            if (wrestFld == null) 
105            {
106                wrestMsg = wrestItemname(fld) + " : 회원아이디 형식이 아닙니다.\n\n영소문자, 숫자, _ 만 가능.\n\n첫글자는 영소문자, 숫자만 가능\n";
107                wrestFld = fld;
108            }
109        }
110    }
111
112    // 한글인지 검사 (자음, 모음만 있는 한글은 불가)
113    function wrestHangul(fld) 
114    { 
115        if (!wrestTrim(fld)) return;
116
117        var pattern = /([^가-힣\x20])/i; 
118
119        if (pattern.test(fld.value)) 
120        {
121            if (wrestFld == null) 
122            { 
123                wrestMsg = wrestItemname(fld) + ' : 한글이 아닙니다. (자음, 모음만 있는 한글은 처리하지 않습니다.)\n'; 
124                wrestFld = fld; 
125            } 
126        } 
127    }
128
129    // 한글인지 검사2 (자음, 모음만 있는 한글도 가능)
130    function wrestHangul2(fld) 
131    { 
132        if (!wrestTrim(fld)) return;
133
134        var pattern = /([^가-힣ㄱ-ㅎㅏ-ㅣ\x20])/i; 
135
136        if (pattern.test(fld.value)) 
137        {
138            if (wrestFld == null) 
139            { 
140                wrestMsg = wrestItemname(fld) + ' : 한글이 아닙니다.\n'; 
141                wrestFld = fld; 
142            } 
143        } 
144    }
145
146    // 한글,영문,숫자인지 검사3
147    function wrestHangulAlphaNumeric(fld) 
148    { 
149        if (!wrestTrim(fld)) return;
150
151        var pattern = /([^가-힣\x20^a-z^A-Z^0-9])/i; 
152
153        if (pattern.test(fld.value)) 
154        {
155            if (wrestFld == null) 
156            { 
157                wrestMsg = wrestItemname(fld) + ' : 한글, 영문, 숫자가 아닙니다.\n'; 
158                wrestFld = fld; 
159            } 
160        } 
161    }
162
163    // 숫자인지검사 
164    // 배부른꿀꿀이님 추가 (http://dasir.com) 2003-06-24
165    function wrestNumeric(fld) 
166    { 
167        if (fld.value.length > 0) 
168        { 
169            for (i = 0; i < fld.value.length; i++) 
170            { 
171                if (fld.value.charAt(i) < '0' || fld.value.charAt(i) > '9') 
172                { 
173                    wrestMsg = wrestItemname(fld) + " : 숫자가 아닙니다.\n"; 
174                    wrestFld = fld; 
175                }
176            }
177        }
178    }
179
180    // 영문자 검사 
181    // 배부른꿀꿀이님 추가 (http://dasir.com) 2003-06-24
182    function wrestAlpha(fld) 
183    { 
184        if (!wrestTrim(fld)) return; 
185
186        var pattern = /(^[a-zA-Z]+$)/; 
187        if (!pattern.test(fld.value)) 
188        { 
189            if (wrestFld == null) 
190            { 
191                wrestMsg = wrestItemname(fld) + " : 영문이 아닙니다.\n"; 
192                wrestFld = fld; 
193            } 
194        } 
195    } 
196
197    // 영문자와 숫자 검사 
198    // 배부른꿀꿀이님 추가 (http://dasir.com) 2003-07-07
199    function wrestAlphaNumeric(fld) 
200    { 
201       if (!wrestTrim(fld)) return; 
202       var pattern = /(^[a-zA-Z0-9]+$)/; 
203       if (!pattern.test(fld.value)) 
204       { 
205           if (wrestFld == null) 
206           { 
207               wrestMsg = wrestItemname(fld) + " : 영문 또는 숫자가 아닙니다.\n"; 
208               wrestFld = fld; 
209           } 
210       } 
211    } 
212
213    // 영문자와 숫자 그리고 _ 검사 
214    function wrestAlphaNumericUnderLine(fld) 
215    { 
216       if (!wrestTrim(fld)) 
217           return; 
218
219       var pattern = /(^[a-zA-Z0-9\_]+$)/; 
220       if (!pattern.test(fld.value)) 
221       { 
222           if (wrestFld == null) 
223           { 
224               wrestMsg = wrestItemname(fld) + " : 영문, 숫자, _ 가 아닙니다.\n"; 
225               wrestFld = fld; 
226           } 
227       } 
228    } 
229
230    // 주민등록번호 검사
231    function wrestJumin(fld) 
232    { 
233       if (!wrestTrim(fld)) return; 
234       var pattern = /(^[0-9]{13}$)/; 
235       if (!pattern.test(fld.value)) 
236       { 
237           if (wrestFld == null) 
238           { 
239               wrestMsg = wrestItemname(fld) + " : 주민등록번호를 13자리 숫자로 입력하십시오.\n"; 
240               wrestFld = fld; 
241           } 
242       } 
243       else 
244       {
245            var sum_1 = 0;
246            var sum_2 = 0;
247            var at=0;
248            var juminno= fld.value;
249            sum_1 = (juminno.charAt(0)*2)+
250                    (juminno.charAt(1)*3)+
251                    (juminno.charAt(2)*4)+
252                    (juminno.charAt(3)*5)+
253                    (juminno.charAt(4)*6)+
254                    (juminno.charAt(5)*7)+
255                    (juminno.charAt(6)*8)+
256                    (juminno.charAt(7)*9)+
257                    (juminno.charAt(8)*2)+
258                    (juminno.charAt(9)*3)+
259                    (juminno.charAt(10)*4)+
260                    (juminno.charAt(11)*5);
261            sum_2=sum_1 % 11;
262
263            if (sum_2 == 0) 
264                at = 10;
265            else 
266            {
267                if (sum_2 == 1) 
268                    at = 11;
269                else 
270                    at = sum_2;
271            }
272            att = 11 - at;
273            // 1800 년대에 태어나신 분들은 남자, 여자의 구분이 9, 0 이라는 
274            // 얘기를 들은적이 있는데 그렇다면 아래의 구문은 오류이다.
275            // 하지만... 100살넘은 분들이 주민등록번호를 과연 입력해볼까?
276            if (juminno.charAt(12) != att || 
277                juminno.substr(2,2) < '01' ||
278                juminno.substr(2,2) > '12' ||
279                juminno.substr(4,2) < '01' ||
280                juminno.substr(4,2) > '31' ||
281                juminno.charAt(6) > 4) 
282            {
283               wrestMsg = wrestItemname(fld) + " : 올바른 주민등록번호가 아닙니다.\n"; 
284               wrestFld = fld; 
285            }
286
287        }
288    } 
289
290    // 사업자등록번호 검사
291    function wrestSaupja(fld) 
292    { 
293       if (!wrestTrim(fld)) return; 
294       var pattern = /(^[0-9]{10}$)/; 
295       if (!pattern.test(fld.value)) 
296       { 
297           if (wrestFld == null) 
298           { 
299               wrestMsg = wrestItemname(fld) + " : 사업자등록번호를 10자리 숫자로 입력하십시오.\n"; 
300               wrestFld = fld; 
301           } 
302       } 
303       else 
304       {
305            var sum = 0;
306            var at = 0;
307            var att = 0;
308            var saupjano= fld.value;
309            sum = (saupjano.charAt(0)*1)+
310                  (saupjano.charAt(1)*3)+
311                  (saupjano.charAt(2)*7)+
312                  (saupjano.charAt(3)*1)+
313                  (saupjano.charAt(4)*3)+
314                  (saupjano.charAt(5)*7)+
315                  (saupjano.charAt(6)*1)+
316                  (saupjano.charAt(7)*3)+
317                  (saupjano.charAt(8)*5);
318            sum += parseInt((saupjano.charAt(8)*5)/10);
319            at = sum % 10;
320            if (at != 0) 
321                att = 10 - at;  
322
323            if (saupjano.charAt(9) != att) 
324            {
325               wrestMsg = wrestItemname(fld) + " : 올바른 사업자등록번호가 아닙니다.\n"; 
326               wrestFld = fld; 
327            }
328
329        }
330    } 
331
332    // 공백 검사후 공백을 "" 로 변환
333    function wrestNospace(fld)
334    {
335        var pattern = /(\s)/g; // \s 공백 문자
336        if (pattern.test(fld.value)) 
337        {
338            if (wrestFld == null) 
339            {
340                wrestMsg = wrestItemname(fld) + " : 공백이 없어야 합니다.\n";
341                wrestFld = fld;
342            }
343        }
344    }
345
346    // submit 할 때 속성을 검사한다.
347    function wrestSubmit()
348    {
349        wrestMsg = "";
350        wrestFld = null;
351
352        var attr = null;
353
354        // 해당폼에 대한 요소의 갯수만큼 돌려라
355        for (var i = 0; i < this.elements.length; i++) 
356        {
357            // Input tag 의 type 이 text, file, password 일때만
358            // 3.30
359            // 셀렉트 박스일때도 필수 선택 검사합니다. select-one
360            if (this.elements[i].type == "text" || 
361                this.elements[i].type == "file" || 
362                this.elements[i].type == "password" ||
363                this.elements[i].type == "select-one" ||
364                this.elements[i].type == "textarea") 
365            {
366                // 배열의 길이만큼 돌려라
367                for (var j = 0; j < arrAttr.length; j++) 
368                {
369                    // 배열에 정의한 속성과 비교해서 속성이 있거나 값이 있다면
370                    if (this.elements[i].getAttribute(arrAttr[j]) != null) 
371                    {
372                        /*
373                        // 기본 색상으로 돌려놓고
374                        if (this.elements[i].getAttribute("required") != null) {
375                            this.elements[i].style.backgroundColor = wrestFldDefaultColor;
376                        }
377                        */
378                        switch (arrAttr[j]) 
379                        {
380                            case "required"     : wrestRequired(this.elements[i]); break;
381                            case "trim"         : wrestTrim(this.elements[i]); break;
382                            case "minlength"    : wrestMinlength(this.elements[i]); break;
383                            case "email"        : wrestEmail(this.elements[i]); break;
384                            case "hangul"       : wrestHangul(this.elements[i]); break;
385                            case "hangul2"      : wrestHangul2(this.elements[i]); break;
386                            case "hangulalphanumeric"      
387                                                : wrestHangulAlphaNumeric(this.elements[i]); break;
388                            case "memberid"     : wrestMemberId(this.elements[i]); break;
389                            case "nospace"      : wrestNospace(this.elements[i]); break;
390                            case "numeric"      : wrestNumeric(this.elements[i]); break; 
391                            case "alpha"        : wrestAlpha(this.elements[i]); break; 
392                            case "alphanumeric" : wrestAlphaNumeric(this.elements[i]); break; 
393                            case "alphanumericunderline" : 
394                                                  wrestAlphaNumericUnderLine(this.elements[i]); break; 
395                            case "jumin"        : wrestJumin(this.elements[i]); break; 
396                            case "saupja"       : wrestSaupja(this.elements[i]); break; 
397							
398							// 김선용 2006.3 - 전화번호 형식 검사
399							case "telnumber"	: wrestTelnumber(this.elements[i]); break;
400                            default : break;
401                        }
402                    }
403                }
404            }
405        }
406
407        // 필드가 null 이 아니라면 오류메세지 출력후 포커스를 해당 오류 필드로 옮김
408        // 오류 필드는 배경색상을 바꾼다.
409        if (wrestFld != null) 
410        { 
411            alert(wrestMsg); 
412            if (wrestFld.style.display != 'none') 
413            { 
414                wrestFld.style.backgroundColor = wrestFldBackColor; 
415                wrestFld.focus(); 
416            } 
417            return false; 
418        } 
419
420        if (this.oldsubmit && this.oldsubmit() == false)
421            return false;
422
423        return true;
424    }
425
426    // 초기에 onsubmit을 가로채도록 한다.
427    function wrestInitialized()
428    {
429        for (var i = 0; i < document.forms.length; i++) 
430        {
431            // onsubmit 이벤트가 있다면 저장해 놓는다.
432            if (document.forms[i].onsubmit) document.forms[i].oldsubmit = document.forms[i].onsubmit;
433            document.forms[i].onsubmit = wrestSubmit;
434            for (var j = 0; j < document.forms[i].elements.length; j++) 
435            {
436                // 필수 입력일 경우는 * 배경이미지를 준다.
437                if (document.forms[i].elements[j].getAttribute("required") != null) 
438                {
439                    //document.forms[i].elements[j].style.backgroundColor = wrestFldDefaultColor;
440                    //document.forms[i].elements[j].className = "wrest_required";
441                    //document.forms[i].elements[j].style.backgroundImage = "url("+g4_path+"/js/wrest.gif)";
442                    document.forms[i].elements[j].style.backgroundPosition = "top right";
443                    document.forms[i].elements[j].style.backgroundRepeat = "no-repeat";
444                }
445            }
446        }
447    }
448
449    wrestInitialized();
450}

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.