PageSourceSearch

https://woorisavingsbank.com/resources/common/js/jquery-submit.js?v=1790305924501

js woorisavingsbank.com collected 2026-09-25 03:13:07 UTC 24,229 bytes, 640 lines download raw bytes

1/**
2 * FORM 객체 유효성및 이벤트처리 관련 스크립트
3 * 
4 * Object       : jquery-submit.js
5 * Description  : FORM 객체 유효성및 이벤트처리 관련 스크립트 
6 * Author       : LaheeDad
7 * Since        : 2013.9.10.
8 * Version      : 1.0
9 * 
10 * Modification Information
11 *     since          author              description
12 *  ===========    =============    ===========================
13 *  2013.9.10.     LaheeDad         최초 생성
14 */
15
16
17/**
18 * 문자열의 왼쪽에서 count 만큼의 문자열을 반환
19 * @param   count
20 * @returns string
21 */
22String.prototype.left = function(count){
23    return this.substr(0, count);
24};
25
26/**
27 * 문자열의 오른쪽에서 count 만큼의 문자열을 반환
28 * @param   count
29 * @returns string
30 */
31String.prototype.right = function(count){
32    return this.substr(this.length-count, count);
33};
34
35
36/**
37 * From 유효성 확인을 위한 객체
38 */
39var submitUtil = {
40    /**
41     * SUBMIT 비활성화
42     * @use submitUtil.disabled();
43     */
44    disabled : function() {
45        $('input[type=submit], a.submit, button[type=submit]').prop('disabled', true);
46    },
47    /**
48     * SUBMIT 활성화
49     * @use submitUtil.enable();
50     */
51    enable : function() {     
52        $('input[type=submit], a.submit, button[type=submit]').prop('disabled', false);
53    },
54    /**
55     * 앞뒤 공백을 제거한후에 다시 Obejct에 담아준다.
56     * @use submitUtil.trim(Object)
57     * @param object
58     */
59    trim : function(object){        
60        $(object).val($.trim($(object).val()));   
61    },
62    /**
63     * 입력값 입력유무 확인 
64     * - minLength속성이 있으면 최소 문자수도 확인.
65     * - text/textarea/file/select 만 가능
66     * - select는 ''로 구분함.
67     * @use submitUtil.isEmpty(Object, String)
68     * @param object
69     * @param formName 폼명(Alert Message 표시에 필요함.)     
70     * @returns {Boolean} true : 입력값이 있음. / false : 입력값 없음.
71     */
72    isEmpty : function(object, formName) {
73        var str = '';
74        try{     
75            if(typeof formName == 'undefined'){
76                formName = $(object).attr('title') + '을(를) 입력해 주세요.';
77            }
78            
79            switch(object.type){
80                case 'text' :
81                case 'number' :
82                case 'password' :   
83                case 'hidden' : 
84                case 'textarea' :   
85                    this.trim(object);  
86                    str = $(object).val();
87                    break;
88                case 'file' :
89                    str = $(object).val();
90                    break;
91                case 'select-one' :                    
92                    str = $(object).val(); //$('select[name=' + $(object).attr('name') + '] option:selected').val();                    
93                    break;
94                default : 
95                    return this.alertNfocus(object, formName + ' : text / textarea / select / file 만 가능합니다.' + object.type);  
96            }
97            
98            if("" == str || null == str){
99                return this.alertNfocus(object, formName);                
100            }else{
101            	
102            	if(this.isMaxLength(object, $(object).attr('title'))){
103                	return this.isMinLength(object, $(object).attr('title'));
104                }else{
105                	return false;
106                }
107            }
108            
109        }catch (e) {
110            return this.alertNfocus(object, '[isEmpty]Script Error Message :: ' + e);
111        }
112    },   
113    /**
114     * 최소문자수 확인
115     * @use  submitUtil.isMinLength(Object, String);
116     * @param object
117     * @param formName 폼명(Alert Message 표시에 필요함.)  
118     * @returns
119     */
120    isMinLength : function(object, formName) {
121        try{
122            if(typeof formName == 'undefined'){
123                formName = $(object).attr('title');
124            }
125            
126            if($(object).attr('minlength') != null){
127                if(!($(object).val().length >= $(object).attr('minlength'))){
128                	return this.alertNfocus(object, formName + '을(를) '+ $(object).attr('minlength') + '글자 이상 입력해주세요.');   
129                } 
130            }                
131            
132            return true;
133        }catch (e) {
134            return this.alertNfocus(object, '[isEmpty]Script Error Message :: ' + e);
135        }
136    },
137    /**
138     * 최대문자수 확인
139     * @use  submitUtil.isMaxLength(Object);
140     */
141    isMaxLength : function(object, formName) {
142        try{
143            if($(object).attr('maxlength') != null){
144                if($(object).val().length > $(object).attr('maxlength')){
145                	return this.alertNfocus(object, formName + '을(를) '+ $(object).attr('maxlength') + '글자 이하로 입력해주세요.');   
146                } 
147            }   
148            
149            return true;
150        }catch (e) {
151            return this.alertNfocus(object, '[isEmpty]Script Error Message :: ' + e);
152        }
153    },
154    /**
155     * 입력값이 NULL인지 체크
156     * @use  submitUtil.isNull(Object); 
157     * @param object
158     * @returns true : null
159     */
160    isNull : function(object) {
161        try{     
162            var str = $(object).val();
163            if("0" == str || "" == str || null == str || 'null' === str || str.toString().replace(/ /g,"") == ""){
164                return true;
165            }else{
166                this.trim(object);
167            }
168            
169            return false;
170        }catch (e) {
171            //return this.alertNfocus(object, '[isNull]Script Error Message :: ' + e);
172            return false;
173        }
174    },
175    /**
176     * 입력값에 공백이 있는지 체크
177     * @use  submitUtil.isBlank(Object); 
178     * @param object
179     * @returns {Boolean}
180     */
181    isBlank : function(object) {
182    	var pattern =  /\s/g;
183    	var isPattern = true;
184    	
185    	try{
186    		isPattern = pattern.test($(object).val());
187    	}catch (e) {
188    		isPattern = true;
189    	}
190    	return isPattern;
191    },
192    /**
193     * ID 확인
194     * @use  submitUtil.isID(Object); 
195     * @param object
196     * @returns {Boolean}
197     */
198    isID : function(object, message) {
199    	//var pattern = /^.*(?=.{3,10})(?=.*[a-zA-Z])(?=.*[0-9]).*$/gi;
200        //var pattern = /^.*(?=.{3,10})(?=.*[a-zA-Z0-9]).*$/gi;
201        var pattern = /^[a-zA-Z0-9]{4,20}$/;
202        try{
203            this.trim(object);
204            
205            if(typeof message == 'undefined'){
206            	message = "숫자, 영어를 포함한 4 자 이상 20 자 이하로 입력 해 세오.";
207            }
208            
209            if (!pattern.test($(object).val()) || this.isBlank(object)) {
210                return this.alertNfocus(object, message); 
211            }else {
212                return true;
213            }
214        }catch (e) {
215            return this.alertNfocus(object, message); 
216        }
217    },
218    /**
219     * 비밀번호 체크 
220     * 영문 대/소문자, 특수문자, 숫자를 조합하여 최소 8자리
221     * @use  submitUtil.isPassword(Object); 
222     * @param object
223     * @returns {Boolean}
224     */
225    isPassword : function(object, message) {
226        var pattern = /^.*(?=.{12,30})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[!@#$%^&*\(\)\-_+=]).*$/gi;
227        var pattern2 = /((?=.*[a-zA-Z]{3,})|(?=.*[0-9]{3,})|(?=.*[!@#$%^&*\(\)\-_+=]{3,}))/;
228        var pattern3 = /^.*(?=.{8,20})(?=.*[a-zA-Z])(?=.*[0-9]).*$/gi;
229        var pattern4 =  /^[a-zA-Z0-9!@#$%^&*\(\)\-_+=]{6,}$/;
230        try{
231            this.trim(object);
232
233            var str = $(object).val();
234            
235            /*
236            if(typeof formName == 'undefined'){
237                formName = $(object).attr('title');
238            }
239            
240            if(str == ''){
241                return this.alertNfocus(object, formName+'를 입력해 주십시오.'); 
242            }*/
243            
244//            if(typeof message == 'undefined'){
245                message =  "문자, 숫자를 조합하여 6자 이상 비밀번호를 등록해주세요.";
246//            }
247            
248            var patternYn = pattern4.test(str);
249            
250            if(patternYn && !this.isBlank(object)){
251                return true;
252            }else{
253                return this.alertNfocus(object, message);
254            }
255        }catch (e) {
256            return this.alertNfocus(object, '[isPassword]Script Error Message :: ' + e);
257        }
258    },
259    /**
260     *  E-Mail 주소 확인
261     * @use  submitUtil.isEmail(Object);
262     * @param object
263     * @returns {Boolean}
264     */
265    isEmail : function(object, message) {
266        var pattern1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/;
267        var pattern2 = /^[a-zA-Z0-9\-\.\_]+\@[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4})$/;
268        
269        try{
270        	if(typeof message == 'undefined'){
271                message = "이메일을 확인해 주세요.";
272            }
273        	
274            this.trim(object);
275            if(!pattern1.test($(object).val()) && !pattern2.test($(object).val())){
276                return this.alertNfocus(object, message); 
277            }else{
278                return true;
279            }            
280        }catch (e) {
281            return this.alertNfocus(object, '[isEmail]Script Error Message :: ' + e);
282        }
283    },
284    /**
285     * checkbox,radio checked 확인
286     *
287     * @use  submitUtil.isChecked(object);
288     * @param object : 시작일 form.input객체
289     * @param formName 폼명(Alert Message 표시에 필요함.)
290     * @return true / false
291     */
292    isChecked : function(object, formName){
293        var bRtn = true;
294
295        try{
296            if(!$('input[name="'+$(object).attr("name")+'"]').is(':checked')){
297            	
298                if(typeof formName == 'undefined'){
299                    formName = $(object).attr('title') + '를 선택해 주세요.';
300                }
301                
302                return this.alertNfocus(object, formName);          
303            }
304        }catch (e) {
305            return this.alertNfocus(object, '[isChecked]Script Error Message :: ' + e);
306        }
307
308        return bRtn;
309    },
310    /**
311     * 날자 형식여부 체크 
312     * ref.)  submitUtil.isDateFormat(formId)
313     * @param f_Obj
314     * @param f_title
315     * @returns
316     */
317    isDateFormat: function(object) {
318        if(!dateUtil.isDateFormat(object.value)){
319            return this.alertNfocus(object, $(object).attr('title') + '가 잘못 입력되었습니다.\n다시 입력해주세요.');
320        }
321        
322        return true;
323    },
324    /**
325     * 입력 날짜 유효성 체크
326     * - 입력 날짜가 유효한 날짜인지를 확인 한다.
327     * @use  submitUtil.isDate(Object);
328     * @param object : form.input객체
329     * @return true / false
330     */
331    isDate : function(object){
332        alert(' submitUtil.isDateFormat(formId) 사용하세요.');
333        return false;
334    },
335    /**
336     * 입력 날짜 유효성 체크
337     * - 시작일과 만료일을 확인
338     * - 시작일이 만료일보다 크면 flase
339     *
340     * @use  submitUtil.isDateCompare(Object, Object);
341     * @param oStart : 시작일 form.input객체
342     * @param oEnd : 만료일 form.input객체
343     * @return true / false
344     */
345    isDateCompare : function(oStart, oEnd){
346        var bRtn = true;
347
348        try{
349            this.trim(oStart);
350            this.trim(oEnd);
351            
352            var valStart = $.trim($(oStart).val()).replace(/[-]/g,'');
353            var valEnd = $.trim($(oEnd).val()).replace(/[-]/g,'');
354
355           if(!(valStart <= valEnd)){
356               bRtn = this.alertNfocus(oStart, '선택한 기간이 올바르지 않습니다.\n다시 선택해 주십시오.'); 
357           }
358
359        }catch (e) {
360            return this.alertNfocus(oEnd, '[isDateCompare]Script Error Message :: ' + e);
361        }
362
363        return bRtn;
364    },
365    /**
366     * 입력 날짜 / 시간 유효성 체크
367     * - 시작일과 만료일을 확인
368     * - 시작일이 만료일보다 크면 flase
369     * - 시작일과 종료일이 같다면 하루일정일수도 있음. 시간이 입력되었는지 확인 할것.
370     * - 시작일과 종료일이 같다면 시작시간과 종료시간이 같을수는 없음.
371     *
372     * @use  submitUtil.isDateCompare(Object, Object);
373     * @param oStart : 시작일 form.input객체
374     * @param oEnd : 만료일 form.input객체
375     * @return true / false
376     */
377    isDateTimeCompare : function(oStart, oEnd){
378        var bRtn = true;
379
380        try{
381            this.trim(oStart);
382            this.trim(oEnd);
383            
384            var arrayStart = $.trim($(oStart).val()).replace(/[-:]/g,'').split(' ');
385            var arrayEnd = $.trim($(oEnd).val()).replace(/[-:]/g,'').split(' ');
386            
387            if(!(arrayStart[0] <= arrayEnd[0])){
388                bRtn = this.alertNfocus(oEnd, '종료일이 시작일보다 빠를 수  없습니다.\n다시 선택해 주십시오.'); 
389            }else if(arrayStart[0] === arrayEnd[0] && arrayStart.length > 1){
390                //날짜가 같다면 
391                if(arrayStart[1] === arrayEnd[1]){
392                    bRtn = this.alertNfocus(oEnd, '시작시간과 종료시간이 같을 수  없습니다.\n다시 선택해 주십시오.');
393                }else if(!(arrayStart[1] < arrayEnd[1])){
394                    bRtn = this.alertNfocus(oEnd, '종료시간이 시작시간보다 빠를 수  없습니다.\n다시 선택해 주십시오.');
395                }
396            }
397        }catch (e) {
398            return this.alertNfocus(oEnd, '[isDateTimeCompare]Script Error Message :: ' + e);
399        }
400
401        return bRtn;
402    },
403    /**
404     * 이미지 첨부파일 확인
405     * 
406     * @use  submitUtil.isAttachFile(Object, {IMG,THUMB,DOC,ALL});
407     * @param object
408     * @param fileType (IMG:이미지, THUMB:썸네일용이미지, PDF:PDF파일, DOC:일반첨부파일, ALL:전체)
409     * @returns {Boolean}
410     */
411    isAttachFile : function(object, fileType){
412    	//debugger;
413    	
414        var bRtn = true;        //확인결과
415        
416        //영문/숫자/-/_만 가능하다.
417        //var pattern = /^[a-zA-Z0-9][a-zA-Z0-9\-\_]+\.([a-zA-Z0-9]{3})$/;
418        
419        //영문대소문자한글/_ /-/. 만 허용한다. 
420        var pattern = /^[a-zA-Z0-9가-힣\(\)\[\]\-\_][a-zA-Z0-9가-힣\s\(\)\[\]\-\_]+\.([a-zA-Z0-9]{3,4})$/
421        
422        var fileMaxSize = 524288000;
423
424        try{
425            //파일크기
426            var fileSize = object.files[0].size;
427            
428            //파일경로
429            var attachFilePath = object.value.toLowerCase();
430            
431            //파일명
432            var attachFileName = attachFilePath.substring(attachFilePath.lastIndexOf("\\")+1); 
433            
434            //파일 확장자   
435            var attachFileType = attachFileName.substring(attachFileName.lastIndexOf(".")+1);
436            
437            /*
438             * 파일크기 확인 
439             */
440            if(fileMaxSize < fileSize){
441                return this.alertNfocus(object, '파일첨부 최대 용량은 200MB입니다.'); 
442            }
443            
444            /*
445             * 파일규칙 확인 
446             */            
447            if (!pattern.test(attachFileName)) {
448                return this.alertNfocus(object, $(object).attr('title') + '은(는) 영문 , 숫자, 한글로 된 파일명으로 업로드 해 주십시오.'); 
449            }
450
451            /*
452             * 확장자 확인
453             */
454            switch(fileType){
455	            case 'CSV' :  if(!attachFileType == 'csv'){
456					            bRtn = this.alertNfocus(object,$(object).attr('title') + '은(는) CSV 파일만 업로드 가능합니다.');
457					        }
458					        break;
459                case 'IMG' :  if(!(attachFileType == 'jpg' || attachFileType == 'gif' || attachFileType == 'png')){
460                                bRtn = this.alertNfocus(object,$(object).attr('title') + '은(는) 이미지 파일만 업로드 가능합니다.(JPG, GIF, PNG)');    
461                            }                
462                            break;
463				case 'PRO' :  if(!(attachFileType == 'pdf' || attachFileType == 'jpg' || attachFileType == 'gif' || attachFileType == 'png')){
464                                bRtn = this.alertNfocus(object,$(object).attr('title') + '은(는) PDF, 이미지 파일만 업로드 가능합니다.(JPG, GIF, PNG)');    
465                            }                
466                            break;
467                case 'PDF' :  if(!(attachFileType == 'pdf')){
468			                    bRtn = this.alertNfocus(object,$(object).attr('title') + '은(는) PDF 파일만 업로드 가능합니다. ');    
469			                }                
470			                break;
471                case 'MP4' :  if(!(attachFileType == 'mp4')){
472                                bRtn = this.alertNfocus(object,$(object).attr('title') + '은(는) MP4 파일만 업로드 가능합니다.');
473                            }
474                            break;
475                case 'XLS' :  if(!(attachFileType == 'xls' || attachFileType == 'xlsx')){
476                                bRtn = this.alertNfocus(object,$(object).attr('title') + '은 XLS, XLSX 파일만 등록 가능합니다.');
477                            }
478                            break;
479                case 'DOC' :  if(!(attachFileType == 'pdf' || attachFileType == 'xls' || attachFileType == 'ppt'
480                                    || attachFileType == 'pptx' || attachFileType == 'doc' || attachFileType == 'docx'
481                                    || attachFileType == 'hwp' || attachFileType == 'xlsx' || attachFileType == 'zip')){
482                                bRtn = this.alertNfocus(object,$(object).attr('title') + '은(는) PDF, PPT, PPTX, DOC, DOCX, HWP, XLS, XLSX, ZIP 파일만 업로드 가능합니다.');
483                            }
484                            break;
485                case 'ALL' :  if(!(attachFileType == 'jpg' || attachFileType == 'gif' || attachFileType == 'png'
486                                    || attachFileType == 'pdf' || attachFileType == 'xls' || attachFileType == 'ppt'
487                                    || attachFileType == 'pptx' || attachFileType == 'doc'|| attachFileType == 'docx'
488                                    || attachFileType == 'hwp' || attachFileType == 'xlsx' || attachFileType == 'zip'
489                                    || attachFileType == 'igs' || attachFileType == 'iges' || attachFileType == 'stp' || attachFileType == 'step' || attachFileType =='mp4')){
490                                bRtn = this.alertNfocus(object,$(object).attr('title') + '은(는) JPG, GIF, PNG, PDF, PPT, PPTX, DOC, DOCX, HWP, XLS, XLSX, ZIP, IGS, IGES, STP, STEP, MP4 파일만 업로드 가능합니다.');
491                            }
492                            break;    
493            }        
494        }catch (e) {
495            return this.alertNfocus(object, '[isAttachFile]Script Error Message :: ' + e);
496        }
497        
498        return bRtn;
499    },    
500    /**
501     * 경고창 및 포커싱처리
502     * @use submitUtil.alertNfocus(Object, String);
503     * @param object
504     * @param alertMsg  AlertMessage
505     * @returns {Boolean}
506     */
507    alertNfocus : function(object, alertMsg) {        
508        try{
509            if(alertMsg != ""){
510                alert(alertMsg);   
511            }
512            
513            
514
515			$(object).prop("readonly",true);
516            $(object).click().focus();
517            
518            if(object.type == 'file') {
519            	return false;
520            }
521
522			setTimeout(function(){ 
523				$(object).prop("readonly",false).click().focus().select();
524			}, 40);
525        }catch(e){
526            //ignore
527        }
528        return false;
529    },
530    /**
531     * 문자열 바이트 체크
532     * @use submitUtil.getByte(Object)
533     * @param object
534     * @returns {Number}
535     */
536    getByte : function(object) {    
537        var str = $.trim($(object).val());
538        var strByte = 0;
539        
540        for (var i = 0; i < str.length; i++) {
541            var ch = str.charAt(i);
542            if (escape(ch).length > 4) {
543                strByte += 2;
544            } else if (ch != '\r') {
545                strByte++;
546            }
547        }
548
549        return strByte;
550    }
551};
552
553
554/**
555 * 첨부 파일 관리 
556 */
557var fileUtil = {
558    /**
559     * 파일 다운로드
560     */
561    downloadEvent : function(){
562        $('.btn_file_download').on({
563            click : function(event){
564                event.preventDefault();
565                if($(this).attr('fileSn') != undefined){
566                	//console.log(loginObj.contextPath + "/cm/fileDownMan.do?attcFilSn=" + $(this).attr('fileSn'));
567                    location.href = loginObj.contextPath + "/cm/fileDownMan.do?attcFilSn=" + $(this).attr('fileSn');
568                }
569            }
570        });  
571        
572        $('.btn_file_download_pdf').on({
573            click : function(event){
574                event.preventDefault();
575                if($(this).attr('fileSn') != undefined){
576                    windowUtil.open(loginObj.contextPath + "/cm/fileDownMan.do?attcFilSn=" + $(this).attr('fileSn'),  "popPdfViewer", "", "") ;
577                }
578            }
579        });  
580    },
581    /**
582     * 첨부선택한 파일 삭제
583     */
584    deleteEvent : function(){
585        $('.btn_delete_file').on({
586            click : function(event){
587                event.preventDefault();  
588
589                var $$TD = $(this).parents('td');
590                $$TD.find('.f').hide();
591                $$TD.find('input[type=hidden][name^="attachFileUseYn"]').val('N');
592				$$TD.find('img').remove();
593                
594//                if($(this).attr('fileSn') != undefined){
595//                    if(confirm('삭제하시겠습니까?\n삭제하실 경우 게시물 수정과 상관없이 첨부 이미지(파일)가 삭제됩니다.')){
596//                        fileUtil.submitDeleteFileInfo($(this));
597//                    }
598//                }else{
599//                    alert('삭제할 파일 정보가 없습니다.');
600//                }
601            }        
602        });
603    },
604    /**
605     * 첨부파일 삭제 :: 단건
606     * @use fileUtil.submitDeleteFileInfo($(Object))
607     * @param object
608     */
609    submitDeleteFileInfo : function(object){
610        var data = { attcFilSn : $(object).attr('fileSn'),
611                     menuCd : $(object).attr('menuCd'),
612                     cotnSn : $(object).attr('cotnSn') };
613        
614        ajaxUtil.postDisableAsync(loginObj.contextPath + '/cm/fileDelMan.do', data, fileUtil.resultDeleteFileInfo);
615    },
616    /**
617     * 첨부파일 삭제 결과
618     * @use fileUtil.resultDeleteAttachFileInfo({JSON})
619     * @param json
620     */
621    resultDeleteFileInfo : function(json){
622        if(json.bindingStatus == undefined && json.result.status){
623            var object = $('input[type=hidden][name*="attach"][value='+json.result.seq+']');
624            var parent = $(object).parents('td');
625            
626            //파일정보 영역 삭제
627            $(object).val('0');
628            $(parent).find('.input-file input[type=file]').prop('disabled', false);
629            $(parent).find('.input-file').show();
630            $(parent).find('.img-file').hide();
631            
632            try{
633                //대체텍스트 삭제
634                $('input[id=desc_'+ $(object).attr('id').split('_')[1] +']').val(''); //.css({'background-color' : '#F5F5F5'});
635            }catch(e){}
636        }else{
637            ajaxUtil.error(json);   
638        }
639    }
640};

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.