/** * 공통 JS */ //$(document).ajaxStart($.blockUI).ajaxStop($.unblockUI); $(document).ajaxError(function(event, jqxhr, settings, thrownError) { $.unblockUI(); // console.log(event, jqxhr, settings, thrownError); }); /* * 로딩 */ //$(function() { // jQuery('form').submit(function() { // $.blockUI({baseZ:99999}); // }); //}); //BackSpace 키 방지 이벤트 //$(document).keydown(function(e){ // if(e.target.nodeName != "INPUT" && e.target.nodeName != "TEXTAREA"){ // if(e.keyCode === 8){ // if( confirm("이전 페이지로 이동 하시겠습니까?") ) { // window.histroy.go(-1); // } else { // return false; // } // } // } //}); $(function() { // 달력 선언 initDatePicker(); var $inputCheckbox = $('.inputCheckbox'); var $onlyNumber = $('.onlyNumber'); var $onlyStopPointNumber = $('.onlyStopPointNumber'); var $onlyApostrophePointNumber = $('.onlyApostrophePointNumber'); var $onlyNumberComma = $('.onlyNumberComma'); // 체크박스 if ($inputCheckbox.length > 0) { $inputCheckbox.toggleCheckbox([ '', '' ]); } /* 숫자만 입력 */ if ($onlyNumber.length > 0) { $onlyNumber.on('keydown keyup focusout', function() { onlyNumber(this); }); } /* 숫자만 입력 */ if ($onlyStopPointNumber.length > 0) { $onlyStopPointNumber.on('keydown keyup focusout', function() { onlyStopPointNumber(this); }); } /* 숫자 . ' " 입력 */ if ($onlyApostrophePointNumber.length > 0) { $onlyApostrophePointNumber.on('keydown keyup focusout', function() { onlyApostrophePointNumber(this); }); } /* 숫자만 입력(세자리 콤마) */ if ($onlyNumberComma.length > 0) { $onlyNumberComma.on('keydown keyup focusout', function() { onlyNumberComma(this); }); $onlyNumberComma.each(function() { $(this).val(setComma($(this).val())); }); } // 권한 체크 fncAuthoChecker(); /** * input 24Hours 시간 Mask * class - inputTime */ initInputTimeMask(); }); //달력 선언 function initDatePicker() { var $datepicker = $(".datepicker"); if ($datepicker.length < 1) { return; } $datepicker.prop("autocomplete", "off").datepicker({ dateFormat: "yy-mm-dd", changeYear: true, changeMonth: true, showMonthAfterYear: true, selectOtherMonths: true, showOtherMonths: true, showButtonPanel: true, nextText: '다음 달', prevText: '이전 달', dayNames: ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일'], dayNamesMin: ['일', '월', '화', '수', '목', '금', '토'], monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'], monthNames: ['1월','2월','3월','4월','5월','6월','7월','8월','9월','10월','11월','12월'], beforeShow: function() { setTimeout(function(){ $('.ui-datepicker').css('z-index', 9999999); }, 0); } }).inputmask("9999-99-99"); $datepicker.focusout(function(){ var date = $(this).val(); if(date != '') { var year = date.split("-")[0].replace(/[^0-9]/g,""); var month = date.split("-")[1].replace(/[^0-9]/g,""); var day = date.split("-")[2].replace(/[^0-9]/g,""); if(year != '') { for(var i = year.length; i < 4; i++) { year = "0" + year; } } if(month != '') { if(month > 12) { month = "12"; }else if(month < 1) { month = "01"; } for(var i = month.length; i < 2; i++) { month = "0" + month; } }else { month = "01"; } if(day != '') { if(month == "01" || month == "03" || month == "05" || month == "07" || month == "08" || month == "10" || month == "12") { if(day > 31) { day = "31"; }else if(day < 1) { day = "01"; } }else if(month == "04" || month == "06" || month == "09" || month == "11") { if(day > 30) { day = "30"; }else if(day < 1) { day = "01"; } }else if(month == "02") { if(day > 29) { day = "28"; }else if(day < 1) { day = "01"; } } for(var i = day.length; i < 2; i++) { day = "0" + day; } }else { day = "01"; } date = year + "-" + month + "-" + day; $(this).val(date); } }); } // minDate, maxDate 필요할 때 // 시작일 셀렉터 : bgnde , 종료일 셀렉터 : endde, 시작 종료 상위 셀렉터 : groupTag function initDatePickerMulti(start, end, groupTag) { var $start = $(start); var $end = $(end); var $startEnd = $(start + "," + end); if ($start.length < 1) { return; } $start.prop("autocomplete", "off").datepicker({ dateFormat: "yy-mm-dd", changeYear: true, changeMonth: true, showMonthAfterYear: true, selectOtherMonths: true, showOtherMonths: true, showButtonPanel: true, nextText: '다음 달', prevText: '이전 달', dayNames: ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일'], dayNamesMin: ['일', '월', '화', '수', '목', '금', '토'], monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'], monthNames: ['1월','2월','3월','4월','5월','6월','7월','8월','9월','10월','11월','12월'], beforeShow: function() { setTimeout(function(){ $('.ui-datepicker').css('z-index', 9999999); }, 0); }, onClose: function (selectedDate) { $(this).closest(groupTag).find(end).datepicker( "option", "minDate", selectedDate ); }, }); var minDate = $(start).closest(groupTag).find(start).val(); $end.prop("autocomplete", "off").datepicker({ dateFormat: "yy-mm-dd", changeYear: true, changeMonth: true, showMonthAfterYear: true, selectOtherMonths: true, showOtherMonths: true, showButtonPanel: true, nextText: '다음 달', prevText: '이전 달', dayNames: ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일'], dayNamesMin: ['일', '월', '화', '수', '목', '금', '토'], monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'], monthNames: ['1월','2월','3월','4월','5월','6월','7월','8월','9월','10월','11월','12월'], beforeShow: function() { setTimeout(function(){ $('.ui-datepicker').css('z-index', 9999999); }, 0); }, minDate: minDate }); $startEnd.focusout(function(){ var date = $(this).val(); if(date != '') { var year = date.split("-")[0].replace(/[^0-9]/g,""); var month = date.split("-")[1].replace(/[^0-9]/g,""); var day = date.split("-")[2].replace(/[^0-9]/g,""); if(year != '') { for(var i = year.length; i < 4; i++) { year = "0" + year; } } if(month != '') { if(month > 12) { month = "12"; }else if(month < 1) { month = "01"; } for(var i = month.length; i < 2; i++) { month = "0" + month; } }else { month = "01"; } if(day != '') { if(month == "01" || month == "03" || month == "05" || month == "07" || month == "08" || month == "10" || month == "12") { if(day > 31) { day = "31"; }else if(day < 1) { day = "01"; } }else if(month == "04" || month == "06" || month == "09" || month == "11") { if(day > 30) { day = "30"; }else if(day < 1) { day = "01"; } }else if(month == "02") { if(day > 29) { day = "28"; }else if(day < 1) { day = "01"; } } for(var i = day.length; i < 2; i++) { day = "0" + day; } }else { day = "01"; } date = year + "-" + month + "-" + day; $(this).val(date); } }); } // input 시간 마스크 설정 function initInputTimeMask() { var $inputTime = $('.inputTime'); var $inputTimeSec = $('.inputTimeSec'); if ($inputTime.length < 1 && $inputTimeSec.length < 1) { return; } $inputTime.inputmask('datetime',{'inputFormat':'HH:MM', 'hourFormat' : '24', 'showMaskOnHover' : false, 'placeholder' : "__:__"}); $inputTimeSec.inputmask('datetime',{'inputFormat':'HH:MM:ss', 'hourFormat' : '24', 'showMaskOnHover' : false, 'placeholder' : "__:__:__"}); //시간 자동 완성 $inputTime.focusout(function(){ var time = $(this).val(); if(time != "") { var hour = time.split(":")[0]; var minute = time.split(":")[1]; if(hour != "") { if(hour.replace(/[^0-9]/g,"") >= 24) { hour = ""; }else{ var first = hour.substring(0,1).replace(/[^0-9]/g,""); var second = hour.substring(1,2).replace(/[^0-9]/g,""); if(first == "") { first = 0; } if(second == "") { second = 0; } hour = first + second; } } if(minute.replace(/[^0-9]/g,"") != "") { if(minute.replace(/[^0-9]/g,"") >= 60) { minute = ""; }else{ var first = minute.substring(0,1).replace(/[^0-9]/g,""); var second = minute.substring(1,2).replace(/[^0-9]/g,""); if(first == "") { first = 0; } if(second == "") { second = 0; } minute = first + second; } }else { if(hour != "") { minute = "00"; } } $(this).val(hour + ":" + minute); } }); //시간 자동 완성 시:분:초 $inputTimeSec.focusout(function(){ var time = $(this).val(); if(time != "") { var hour = time.split(":")[0]; var minute = time.split(":")[1]; var sec = time.split(":")[2]; if(hour != "") { if(hour.replace(/[^0-9]/g,"") >= 24) { hour = ""; }else{ var first = hour.substring(0,1).replace(/[^0-9]/g,""); var second = hour.substring(1,2).replace(/[^0-9]/g,""); if(first == "") { first = 0; } if(second == "") { second = 0; } hour = first + second; } } if(minute.replace(/[^0-9]/g,"") != "") { if(minute.replace(/[^0-9]/g,"") >= 60) { minute = ""; }else{ var first = minute.substring(0,1).replace(/[^0-9]/g,""); var second = minute.substring(1,2).replace(/[^0-9]/g,""); if(first == "") { first = 0; } if(second == "") { second = 0; } minute = first + second; } }else { if(hour != "") { minute = "00"; } } if(sec.replace(/[^0-9]/g,"") != "") { if(sec.replace(/[^0-9]/g,"") >= 60) { sec = ""; }else{ var first = sec.substring(0,1).replace(/[^0-9]/g,""); var second = sec.substring(1,2).replace(/[^0-9]/g,""); if(first == "") { first = 0; } if(second == "") { second = 0; } sec = first + second; } }else { if(minute != "") { sec = "00"; } } $(this).val(hour + ":" + minute + ":" + sec); } }); } /* * 서브밋시 콤마제외 */ function submitNummberComma() { $('.onlyNumberComma').each(function() { $(this).val($(this).val().replace(/[^0-9-]/g,"")); }); } function submitNummberComma(str) { var result = parseInt(str.replace(/[^0-9-]/g,"")); if(isNaN(result)){ result = null; } return result; } /* * 숫자만 입력 */ function onlyNumber(obj){ $(obj).val($(obj).val().replace(/[^0-9]/g,"")); } /* * 숫자만 입력 */ function onlyStopPointNumber(obj){ $(obj).val($(obj).val().replace(/[^0-9.]/g,"")); } function onlyApostrophePointNumber(obj){ $(obj).val($(obj).val().replace(/[^0-9.\"\'Φ/*]/g,"")); } /* * 숫자만 입력(세자리 콤마) */ function onlyNumberComma(obj){ $(obj).val(setComma($(obj).val().replace(/[^0-9-]/g,""))); } function setComma(number) { // 정규표현식 : (+- 존재하거나 존재 안함, 숫자가 1개 이상), (숫자가 3개씩 반복) var reg = /(^[+-]?\d+)(\d{3})/; // 스트링변환 number += ''; while (reg.test(number)) { // replace 정규표현식으로 3자리씩 콤마 처리 number = number.replace(reg,'$1'+','+'$2'); } return number; } /* * object의 name 속성을 재정의한다.(배열로 만들기 위함) */ function fncRename(obj, i) { var names = $(obj).attr('name').split('.'); var rname = names[0] + '[' + i + '].' + names[1]; $(obj).attr('name', rname); } // formSerializeObject Json 변환 $.fn.serializeObject = function () { "use strict"; var result = {}; var extend = function (i, element) { var node = result[element.name]; if ('undefined' !== typeof node && node !== null) { if ($.isArray(node)) { node.push(element.value); } else { result[element.name] = [node, element.value]; } } else { result[element.name] = element.value; } }; $.each(this.serializeArray(), extend); return result; }; //-- 프린트 설정 시작 var beforePrint = function() { // $('button').css('display', 'none'); $('#printSection button').css('display', 'none'); } var afterPrint = function() { // setTimeout(function() { // if( this.opener != null ) { // this.close(); // } // $('button').css('display', ''); // }, 50); setTimeout(function() { if( this.opener != null ) { this.close(); } $('#printSection').remove(); }, 50); // 인쇄 취소나 완료시 팝업창 닫기 } // chrome 63이후 부터 onbeforeprint 이벤트가 지원됨에 따라 아래 주석 // firefox for android 빼고 모든 브라우저 지원 //if( window.matchMedia ) { // var mQuery = window.matchMedia('print'); // mQuery.addListener(function(mql) { // if( mql.matches ) { // beforePrint(); // } else { // afterPrint(); // } // }); //} window.onbeforeprint = beforePrint; window.onafterprint = afterPrint; //-- 프린트 설정 완료 //-- 팝업 프린트 영역 dom 생성 function printElement(elem) { var domClone = elem.cloneNode(true); var id = domClone.getAttribute('id'); $(domClone).removeAttr('id'); var $printSection = document.getElementById("printSection"); if (!$printSection) { var $printSection = document.createElement("div"); $printSection.id = "printSection"; document.body.appendChild($printSection); } $printSection.innerHTML = ""; $printSection.appendChild(domClone); window.print(); } // Dom 데이터 초기화 function resetDomData(obj) { obj.each(function() { $(this).find('input[type="text"], textarea').val(''); }); } function itoStr($num) { $num < 10 ? $num = '0'+$num : $num; return $num.toString(); } /* * 엑셀다운로드 * tblId : $(tableId) * fileNm : 다운로드 파일명 */ function excelDownloads(tblId, fileNm) { var dt = new Date(); var year = itoStr( dt.getFullYear() ); var month = itoStr( dt.getMonth() + 1 ); var day = itoStr( dt.getDate() ); var hour = itoStr( dt.getHours() ); var mins = itoStr( dt.getMinutes() ); var postfix = year + month + day + "_" + hour + mins; var fileName = fileNm + postfix + ".xls"; TXLManager(tblId).exportTableToExcel(fileNm + postfix); } /* 이미지 preImgView * img : img tag Id * input : input file tag object * hidden : hidden input Id */ function preImgView(img, input, hidden) { var preview = document.getElementById(img); var hiddenInput = document.getElementById(hidden); var file = input.files[0]; var reader = new FileReader(); reader.addEventListener("load", function () { preview.src = reader.result; if( hiddenInput != null ) { hiddenInput.innerHTML = reader.result; } }, false); if (file) { reader.readAsDataURL(file); } } /* * replaceALl 함수 * str 문자열 * searchStr 찾을문자열 * replaceStr 바꿀문자열 */ function replaceAll(str, searchStr, replaceStr) { return str.split(searchStr).join(replaceStr); } /* * enter(\r\n)를 br로 치환 */ function changeEnterBr(str) { return replaceAll(str.replace(/(?:\r\n|\r|\n)/g, "
"), ' ', ' ') } /* * br을 enter(\r\n)로 치환 */ function changeBrEnter(str) { return replaceAll(str, "
", "\r\n"); } /* * 팝업 프로그래스 바 * ctx 컨텍스트패스 * popupId 팝업ID * url 리다이렉트할 url(한글파라메터시 encodeURI("한글", "UTF-8")) */ function popupProgress(ctx, popupId, url) { var retVal; retVal = window.open("", popupId, "width=1000, height=800, left=100, top=100"); var data = ''; data += '