//전화번호 자동 설정 function inputPhoneNumber(obj) { $(obj).val($(obj).val().replace(/[^0-9]/g, "").replace(/(^02|^0505|^1[0-9]{3}|^0[0-9]{2})([0-9]+)?([0-9]{4})/, "$1-$2-$3").replace("--", "-")); } //사업자번호 자동 설정 function bizNoFormatter(obj) { $(obj).val($(obj).val().replace(/[^0-9]/g, "").replace(/(\d{3})(\d{2})(\d{5})/, '$1-$2-$3')); } //영문만 입력받기 function onlyAlphabet(obj) { $(obj).val($(obj).val().replace(/[^a-z0-9]/g, "")); } //숫자만 입력받기 function onlyNumber(obj) { $(obj).val($(obj).val().replace(/[^0-9]/g, "")); } //판매가격 입력받기 function onlyPrice(obj) { var val = $(obj).val().replace(/[^0-9]/g, ""); $(obj).val(numberFormat(val)); } //휴대전화번호 체크 function isCellPhone(p) { p = p.split('-').join(''); var regPhone = /^((01[1|6|7|8|9])[1-9]+[0-9]{6,7})|(010[1-9][0-9]{7})$/; return regPhone.test(p); } //0~100까지 퍼센트 입력 function percentInput(obj) { var val = obj.value; val = val.replace(/(^0+)/, ""); if (val > 100) { val = 100; } else if (val < 0) { val = 0; } obj.value = val; } //이메일 형식확인 $("input[data-event='email_check']").keyup(function () { //검사시작 var email_val = $(this).val(); if (email_val == '') { validateInput(this, '', '') return; } var filter = /^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/; if (filter.test(email_val) == false) { validateInput(this, 'danger', '이메일 형식에 맞게 입력해주세요.') return; } else { validateInput(this, 'success', '사용가능한 이메일 입니다.'); } }); //이메일 중복확인 $("input[data-event='email_check']").focusout(function () { //검사시작 var email_val = $(this).val(); if (email_val == '') { validateInput(this, '', '') return; } var data = { 'email': email_val }; $.ajax({ url: baseUrl + '/action?name=account_email_check', type: 'POST', data: data, dataType: 'json', success: function (response) { let meta = response['meta']; let data = response['data']; if (meta['state'] == 'success') { validateInput('#email', 'success', meta['message']); $('.email-check-btn').attr('disabled', false); } else { validateInput('#email', 'danger', meta['message']); $('.email-check-btn').attr('disabled', true); } }, beforeSend: function () { }, complete: function () { }, error: function (e) { } }); }); //스위치 버튼 function useSwitch(name) { if ($('#' + name + '0').is(':checked')) { $('#' + name + '0').prop("checked", false); $('#' + name + '1').prop("checked", true); return; } if ($('#' + name + '1').is(':checked')) { $('#' + name + '1').prop("checked", false); $('#' + name + '0').prop("checked", true); return; } } //폼 빈값 검사 function input_check(input, msg) { console.log(input); if(input.length==0){ return true; } if (input.val() == '' || input.val() == null) { alertSet(msg, 'warning', function () { setTimeout(function () { $(input).focus(); }, 200); }); return false; } else { return true; } } //폼데이터 ajax 전송 var form_check = new Object(); function submitForm(form, method, url, location, msg, func) { form = typeof form !== 'undefined' ? form : ''; method = typeof method !== 'undefined' ? method : 'POST'; location = typeof location !== 'undefined' ? location : 'reload'; msg = typeof msg !== 'undefined' ? msg : ''; func = typeof func !== 'undefined' ? func : ''; //폼데이터 검사 for (var key in form_check) { if (typeof form_check[key] === 'function') { if (form_check[key]() == false) return; } } var submitData = ''; if (form != '') { form = $(form)[0]; submitData = new FormData(form); } $.ajax({ url: url, processData: false, contentType: false, data: submitData, type: method, dataType: 'json', success: function (response) { if (typeof func === 'function') { func(response); } else { let meta = response['meta']; let data = response['data']; if (meta['state'] == 'success') { if (msg != '') { alertSet(msg, 'success', '#'); } if (location == 'reload') { window.location.reload(); } else if (location == 'referrer') { history.back(); } else if (location == 'N') { } else { window.location.href = location; } } else { // alert(meta['message']); } } }, beforeSend: function () { $('.loaderFull').addClass('loaderFullActive'); }, complete: function () { $('.loaderFull').removeClass('loaderFullActive'); }, error: function (e) { } }); } //파일삭제 function deleteFileConfirm(id, tableName, inputName, pid) { confirmSet('파일을 삭제하시겠습니까?', 'info', function () { deleteFile(id, tableName, inputName, pid); }); } function deleteFile(id, tableName, inputName, pid) { postData = { "id": id, "tableName": tableName, "inputName": inputName, "pid": pid }; $.ajax({ url: baseUrl + '/board/file/delete', type: 'POST', data: postData, dataType: 'json', success: function (response) { let meta = response['meta']; if (meta['state'] == 'success') { alertSet('정상적으로 처리되었습니다.', 'success', window.location.href); } else { alertSet('잘못된 요청입니다.', 'error', '#'); } }, beforeSend: function () { $('.loaderFull').addClass('loaderFullActive'); }, complete: function () { $('.loaderFull').removeClass('loaderFullActive'); }, error: function (e) { alert('error') console.log(e); } }); } //파일삭제 리로드 안함 function deleteFileConfirm2(id, inputName) { confirmSet('파일을 삭제하시겠습니까?', 'info', function () { deleteFile2(id, inputName); }); } function deleteFile2(id, inputName) { postData = { "id": id }; $.ajax({ url: baseUrl + '/action?name=file_delete', type: 'POST', data: postData, dataType: 'json', success: function (response) { let meta = response['meta']; if (meta['state'] == 'success') { alertSet('정상적으로 처리되었습니다.', 'success', '#'); $('.preview-' + inputName + ' .preview-file-name').text(''); $('.preview-' + inputName + ' .preview-file-box').removeClass('active'); } else { alertSet('잘못된 요청입니다.', 'error', '#'); } }, beforeSend: function () { $('.loaderFull').addClass('loaderFullActive'); }, complete: function () { $('.loaderFull').removeClass('loaderFullActive'); }, error: function (e) { alert('error') console.log(e); } }); } //파일삭제 리로드 안함(멀티) function deleteFileConfirm3(id, inputName, formId, formGroup) { confirmSet('파일을 삭제하시겠습니까?', 'info', function () { deleteFile3(id, inputName, formId, formGroup); }); } function deleteFile3(id, inputName, formId, formGroup) { postData = { "id": id }; $.ajax({ url: baseUrl + '/action?name=file_delete', type: 'POST', data: postData, dataType: 'json', success: function (response) { let meta = response['meta']; if (meta['state'] == 'success') { alertSet('정상적으로 처리되었습니다.', 'success', '#'); $('.preview-' + inputName + ' .preview-file-name').text(''); $('.preview-' + inputName + ' .preview-file-box').removeClass('active'); $('.preview-' + inputName + ' .preview-file-box .remove-file').remove(); console.log(formId + ' .multi-file-' + formGroup); multiFileLabelCheck2(formId + ' .multi-file-' + formGroup); } else { alertSet('잘못된 요청입니다.', 'error', '#'); } }, beforeSend: function () { $('.loaderFull').addClass('loaderFullActive'); }, complete: function () { $('.loaderFull').removeClass('loaderFullActive'); }, error: function (e) { alert('error') console.log(e); } }); } //파일 업로드 미리보기 이미지 경로 function readURL(input, preview) { if (input.files && input.files[0]) { var reader = new FileReader(); reader.onload = function (e) { var fileResult = e.target.result; // console.log(fileResult) if (fileResult.indexOf('data:application/pdf;base64') != -1) { // $(preview).css('background-image', 'url(https://www.thenfapost.com/wp-content/uploads/2020/08/unnamed-2.png)'); $(preview).html(""); } else { $(preview).empty(); $(preview).css('background-image', 'url(' + fileResult + ')'); } } reader.readAsDataURL(input.files[0]); } } //파일업로드시 파일이름 출력 function getFileTitle(input, target) { var fileNme = input.files[0].name; $(target).val(fileNme); } //파일업로드시 파일이름 출력 (커스텀) function getFileTitle2(input, target) { var fileNme = input.files[0].name; $(target + ' .preview-file-box').addClass('active'); $(target).closest('.upload-preview').addClass('active'); $(target + ' .preview-file-name').text(fileNme); } //파일 프리뷰 파일이름 삭제 function resetFileTitle(inputName) { $('#input' + inputName + '').val(); $('.preview-' + inputName + ' .preview-file-name').text(''); $('.preview-' + inputName + ' .preview-file-box').removeClass('active'); $(target).closest('.upload-preview').removeClass('active'); } //파일 프리뷰 파일이름 삭제 (폼지정) function resetFileTitle2(formId, inputName) { var fileDom = $(formId + '_input_' + inputName); var agent = navigator.userAgent.toLowerCase(); //파일초기화 if ((navigator.appName == 'Netscape' && navigator.userAgent.search('Trident') != -1) || (agent.indexOf("msie") != -1)) { fileDom.replaceWith(fileDom.clone(true)); } else { fileDom.val(""); } //미리보기 초기화 $('.preview-' + inputName + ' .preview-file-name').text(''); $('.preview-' + inputName + ' .preview-file-box').removeClass('active'); } //파일 업로드 용량 체크 function fileSizeCheck(formId, inputName, fileGroup, maxSize) { var fileInput = formId + '_input_' + inputName; maxSize = typeof maxSize !== 'undefined' ? maxSize : 10; if ($(fileInput).val() != "") { var fileSize = $(fileInput)[0].files[0].size; var fileSizeMB = (fileSize / 1024 / 1024).toFixed(2); var maxSizeByte = maxSize * 1024 * 1024; //2MB if (fileSize > maxSizeByte) { alertSet('첨부파일 사이즈는 ' + maxSize + 'MB 이내로 등록 가능합니다.
업로드한 파일: ' + fileSizeMB + 'MB', 'warning', '#'); resetFileTitle2(formId, inputName); multiFileLabelCheck2(formId + ' .multi-file-' + fileGroup); return false; } } } //파일 업로드 확장자 체크 function fileExtCheck(formId, inputName, fileGroup, ext) { var fileInput = formId + '_input_' + inputName; ext = typeof ext !== 'undefined' ? ext = ext.split(",") : ["jpg", "jpeg", "png"]; if ($(fileInput).val() != "") { var fileExt = $(fileInput).val().split(".").pop().toLowerCase(); if ($.inArray(fileExt, ext) == -1) { alertSet('지원하지 않는 파일 확장자입니다. (' + fileExt + ')', 'warning', '#'); resetFileTitle2(formId, inputName); multiFileLabelCheck2(formId + ' .multi-file-' + fileGroup); return false; } } } //멀티 파일 체크 function multiFileLabelCheck(target) { console.log(target); $(target + ' .upload-label-btn').removeClass('active'); var labels = $(target).find('.upload-label-btn'); var inputs = $(target).find('input'); var preview_file_box = $(target + ' .preview-box').find('.preview-file-box'); // console.log(labels); // console.log(preview_file_box); for (i = 0; i < preview_file_box.length; i++) { var isActive = $(preview_file_box[i]).hasClass('active'); if (isActive) { $(labels[i]).addClass('isset'); $(preview_file_box[i]).closest('.upload-preview').addClass('active'); } else { $(labels[i]).removeClass('isset'); } } for (i = 0; i < labels.length; i++) { var lastNum = labels.length - 1; var isSet = $(labels[i]).hasClass('isset'); if (!isSet) { $(labels[i]).addClass('active'); break; } if (i == lastNum) { $(labels[i]).after('') } else { $(target + ' .block-upload').remove(); } } } //멀티 파일 체크 function multiFileLabelCheck2(target) { $(target + ' .upload-label-btn').removeClass('active'); $(target + ' .upload-label-btn.complete').remove(); var labels = $(target).find('.upload-label-btn'); var inputs = $(target).find('input'); var preview_file_box = $(target + ' .preview-box').find('.preview-file-box'); for (i = 0; i < preview_file_box.length; i++) { var isActive = $(preview_file_box[i]).hasClass('active'); var input_id = $(preview_file_box[i]).closest('.preview-box').find('input').attr('id'); if (isActive) { $(target + ' .upload-label label[for=' + input_id).addClass('isset'); $(preview_file_box[i]).closest('.upload-preview').addClass('active'); } else { $(target + ' .upload-label label[for=' + input_id).removeClass('isset'); } } //파일 수량체크 var isSetCount = 0; var targetCount = $(target).parent().parent().prev().find('span.file-count'); var targetMax = $(target).parent().parent().prev().find('span.file-maxcount'); targetMax.text(labels.length); // 파일 최대수량 출력 var upload_complete_label = ``; //멀티파일 등록 체크 for (i = 0; i < labels.length; i++) { var lastNum = labels.length - 1; var isSet = $(labels[i]).hasClass('isset'); if (isSet == true) { isSetCount++; } targetCount.text(isSetCount); // 파일 수량 출력 if (!isSet) { let labelFor = $(labels[i]).attr('for'); $(labels[i]).addClass('active'); var empty_labels = $(target).find('.upload-label-btn:not(.isset)'); $(empty_labels).toArray().forEach(function (label) { var empty_labelFor = $(label).attr('for'); let target_preview_box = $(target + ' #' + empty_labelFor).closest('.preview-box'); var previewBoxOuterHtml = $(target + ' #' + empty_labelFor).closest('.preview-box').prop('outerHTML'); $(target_preview_box).remove(); $(target + ' .upload-preview').append(previewBoxOuterHtml); }); break; } if (i == lastNum) { $(labels[i]).after(upload_complete_label) } else { $(target + ' .upload-label-btn.complete').remove(); } } } //인증 결과 function validateInput(ob, state, msg) { $(ob).parents('.form-group').find('.helper-text').remove(); //초기화 $(ob).parents('.form-group').append('
' + msg + '
'); $(ob).attr('state', state); } //사용 유무 체크 function useCheck(inputId) { if ($('#' + inputId + '0').is(':checked')) { $('#' + inputId + '0').prop("checked", false); $('#' + inputId + '1').prop("checked", true); return; } if ($('#' + inputId + '1').is(':checked')) { $('#' + inputId + '1').prop("checked", false); $('#' + inputId + '0').prop("checked", true); return; } } //글자수 제한 input function textLimit(obj, maxLength) { var dom = $(obj); var str = dom.val(); // var target = dom.parent().parent().prev().find('span.text-length'); // var targetMax = dom.parent().parent().prev().find('span.text-maxlength'); var target = dom.parent().find('span.text-length'); var targetMax = dom.parent().find('span.text-maxlength'); var _byte = 0; var charStr = ''; var cutstr = ''; if (str.length <= 0) { return; } for (var i = 0; i < str.length; i++) { charStr = str.charAt(i); if (escape(charStr).length > 4) { //_byte+=2; _byte++; } else { _byte++; } } if (_byte > maxLength) { cutstr = dom.val().substr(str, maxLength); dom.val(cutstr); target.text(maxLength); return; } target.text(_byte); targetMax.text(maxLength); } //이메일 인증버튼 활성화 function checkButton(ob, name) { if (ob.value.length > 12) { $('#' + name + 'Area button').attr('disabled', false); } else { $('#' + name + 'Area button').attr('disabled', true); $('#' + name + 'CheckId').attr('data-state', false); $('#' + name + 'Area button').text('인증하기'); } } //폰번호입력시 다음칸으로 $('input.input-phone').on('keyup', function () { console.log($(this).val().length) var idVal = $(this).attr('id'); if (idVal == 'phone1') { if ($(this).val().length == 3) { $(this).next().next().focus(); } } else if (idVal == 'phone2') { if ($(this).val().length == 4) { $(this).next().next().focus(); } } }); //폰번호 인증버튼 활성화 function checkButton(ob) { if (ob.value.length > 12) { $('#phoneArea button').attr('disabled', false); } else { $('#phoneArea button').attr('disabled', true); $('#smsCheckId').attr('data-state', false); $('#phoneArea button').text('인증하기'); } } //본인확인 인증번호 발급 function vaildateCodeAt(action, type) { var data = ''; if (action == 'get') { var val = $('#' + type).val(); var mode = $('#' + type).attr('data-mode'); if (mode == undefined) { mode = 'default'; } data = { 'type': type, 'action': action, 'val': val, 'mode': mode, }; } else if (action == 'confirm') { var code = $('#' + type + 'Code').val(); var checkId = $('#' + type + 'CheckId').val(); data = { 'type': type, 'action': action, 'code': code, 'checkId': checkId }; } $.ajax({ url: baseUrl + '/action?name=account_validate_' + type, type: 'POST', data: data, dataType: 'json', success: function (response) { let meta = response['meta']; let data = response['data']; if (meta['state'] == 'success') { if (action == 'get') { //코드발급 성공 $('#' + type + 'Check').slideDown(); $('#' + type + 'CheckId').val(data['checkId']); $('#' + type + 'Area button').text('재발급'); $('#' + type + 'Area button').addClass('btn-1'); $('#' + type + 'Code').focus(); } else if (action == 'confirm') { //인증 성공 $('#' + type + 'CheckId').attr('data-state', 'success'); $('#' + type + 'Check').slideUp(); $('#' + type).attr('readonly', true); $('#' + type + 'Area button').text('인증완료'); $('#' + type + 'Area button').addClass('btn-success'); $('#' + type + 'Area button').attr('disabled', true); } } else { if (action == 'get') { //코드발급 실패 alertSet(meta['message'], 'warning', '#'); } else if (action == 'confirm') { //인증실패 alert('잘못된 인증 코드입니다.'); } } }, beforeSend: function () { }, complete: function () { }, error: function (e) { } }); } /** * 드롭다운 인풋 연결 * @param {object} dropdown 드롭다운 객체 * @param {object} e 이벤트 * @param {string} select_value 선택된 값 */ function dropdown_connect_input(dropdown, e, select_value) { var input_value = dropdown.find('input[type="hidden"]').val(); var value = dropdown.data('value'); var connect = dropdown.data('connect'); if (value == select_value) { $(connect).show(); } else { $(connect).hide(); } } $(function () { $('.dropdown[data-function="dropdown_connect_input"]').each(function () { var dropdown = $(this); var select_value = dropdown.find('input[type="hidden"]').val(); dropdown_connect_input(dropdown, null, select_value); }); });