419 lines
11 KiB
JavaScript
419 lines
11 KiB
JavaScript
|
|
|
|
/* 시스템 js파일
|
|
*
|
|
* 시스템 필요한 함수 여기에 생성해서 쓰세요
|
|
*
|
|
* */
|
|
|
|
|
|
$(document).ready(function() {
|
|
});
|
|
/*우편번호 검색*/
|
|
function fn_postCode(schBtn, test) {
|
|
|
|
var curX = window.screenLeft;
|
|
var curWidth = document.body.clientWidth;
|
|
|
|
var nLeft = curX + (curWidth / 2) - (500 / 2);
|
|
var nTop = (window.screen.height / 2) - (500 / 2);
|
|
|
|
//IE 에서 closet 지원이 되지않아 추가
|
|
if (!Element.prototype.matches) {
|
|
Element.prototype.matches = Element.prototype.msMatchesSelector ||
|
|
Element.prototype.webkitMatchesSelector;
|
|
}
|
|
|
|
if (!Element.prototype.closest) {
|
|
Element.prototype.closest = function(s) {
|
|
var el = this;
|
|
|
|
do {
|
|
if (el.matches(s)) return el;
|
|
el = el.parentElement || el.parentNode;
|
|
} while (el !== null && el.nodeType === 1);
|
|
return null;
|
|
};
|
|
}
|
|
|
|
var domArea = "";
|
|
if (schBtn) {
|
|
domArea = schBtn.closest("tr"); // 주소검색 n개일때 해당 tr 참조
|
|
} else {
|
|
domArea = document;
|
|
}
|
|
|
|
/*input에 텍스트 입력하고 함수 호출할 경우 입력한 텍스트 팝업창에 전달*/
|
|
var popupPostCode = domArea.querySelector('.adr_input').value;
|
|
var popupAddr = domArea.querySelector('.searchResultAddr').value;
|
|
var popupInput = '';
|
|
if (popupAddr != '') {
|
|
popupInput = popupAddr;
|
|
} else if (popupPostCode != '') {
|
|
popupInput = popupPostCode;
|
|
}
|
|
|
|
new daum.Postcode({
|
|
oncomplete: function(data) {
|
|
// 팝업에서 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분.
|
|
|
|
// 각 주소의 노출 규칙에 따라 주소를 조합한다.
|
|
// 내려오는 변수가 값이 없는 경우엔 공백('')값을 가지므로, 이를 참고하여 분기 한다.
|
|
var addr = ''; // 주소 변수
|
|
var extraAddr = ' '; // 참고항목 변수
|
|
|
|
//사용자가 선택한 주소 타입에 따라 해당 주소 값을 가져온다.
|
|
if (data.userSelectedType === 'R') { // 사용자가 도로명 주소를 선택했을 경우
|
|
addr = data.roadAddress;
|
|
} else { // 사용자가 지번 주소를 선택했을 경우(J)
|
|
addr = data.jibunAddress;
|
|
}
|
|
|
|
// 사용자가 선택한 주소가 도로명 타입일때 참고항목을 조합한다.
|
|
if (data.userSelectedType === 'R') {
|
|
// 법정동명이 있을 경우 추가한다. (법정리는 제외)
|
|
// 법정동의 경우 마지막 문자가 "동/로/가"로 끝난다.
|
|
if (data.bname !== '' && /[동|로|가]$/g.test(data.bname)) {
|
|
/* extraAddr += data.bname; */
|
|
addr += data.bname;
|
|
}
|
|
// 건물명이 있고, 공동주택일 경우 추가한다.
|
|
if (data.buildingName !== '' && data.apartment === 'Y') {
|
|
addr += (addr !== '' ? ', ' + data.buildingName : data.buildingName);
|
|
}
|
|
}
|
|
|
|
// 우편번호와 주소 정보를 해당 필드에 넣는다. 첫번째 class가 adr_input, searchResultAddr에 값을 넣는다
|
|
/*domArea.getElementsByClassName("adr_input").value = data.zonecode;*/
|
|
domArea.querySelector('.adr_input').value = data.zonecode;
|
|
/*domArea.getElementsByClassName("searchResultAddr").value = addr;*/
|
|
domArea.querySelector('.searchResultAddr').value = addr;
|
|
// 커서를 상세주소 필드로 이동한다.
|
|
// domArea.getElementsByClassName("usrInsertAddr").focus();
|
|
$('#sigunguCode').val(data.sigunguCode);
|
|
}
|
|
}).open({
|
|
//미리 입력된 값을 팝업창에 전달
|
|
q: popupInput,
|
|
//팝업의 키값입력으로 다중 팝업 방지
|
|
popupKey: 'kccAdressPopup1',
|
|
//팝업 이름 지정
|
|
popupTitle: '주소검색',
|
|
left: nLeft,
|
|
top: nTop
|
|
});
|
|
}
|
|
|
|
// 이메일 도메인 선택 박스
|
|
function emailSelect(obj) {
|
|
var selectUrl = $(obj).find(":selected").val();
|
|
if (!selectUrl) {
|
|
selectUrl = "";
|
|
}
|
|
// 선택 박스 이전 첫번째 text박스
|
|
var email2Obj = $(obj).prevAll().filter("[type='text']:first");
|
|
if (email2Obj) {
|
|
email2Obj.val(selectUrl);
|
|
}
|
|
}
|
|
|
|
//수령지 주소 복사
|
|
function addrCp(obj) {
|
|
var $tdAddr = $(obj).closest("td");
|
|
|
|
var $tdAddrReal = $("#" + $tdAddr[0].id + "Real");
|
|
var $realPost = $tdAddrReal.find(".adr_input");
|
|
var $realAddr = $tdAddrReal.find(".searchResultAddr");
|
|
var $realAddrDtl = $tdAddrReal.find(".usrInsertAddr");
|
|
if ($(obj).prop("checked")) {
|
|
var $post = $tdAddr.find(".adr_input");
|
|
var $addr = $tdAddr.find(".searchResultAddr");
|
|
var $addrDtl = $tdAddr.find(".usrInsertAddr");
|
|
$realPost.val($post.val());
|
|
$realAddr.val($addr.val());
|
|
$realAddrDtl.val($addrDtl.val());
|
|
} else {
|
|
$realPost.val("");
|
|
$realAddr.val("");
|
|
$realAddrDtl.val("");
|
|
}
|
|
}
|
|
|
|
// 개인/법인 분류 선택
|
|
function usrTySelect(obj) {
|
|
if (!obj) return;
|
|
|
|
var usrTy = $("#" + obj.id + ":checked").val();
|
|
if (!usrTy) {
|
|
var ustTy01 = $("[name='rpplUsrTy']:eq(0)");
|
|
ustTy01.prop("checked", true);
|
|
usrTy = ustTy01.val();
|
|
}
|
|
|
|
$(obj).closest("table").find("tr[usrTy]").hide().prop("disabled", false);
|
|
$(obj).closest("table").find("tr[usrTy='" + usrTy + "']").show().prop("disabled", true);
|
|
//$("tr[usrTy]").hide().prop("disabled", false);
|
|
//$("tr[usrTy='"+usrTy+"']").show().prop("disabled", true);
|
|
}
|
|
|
|
// 법인번호 유효성 자동 맞춤
|
|
function onKeyUpBizId(jObj) {
|
|
if (!jObj) return;
|
|
jObj.on("keyup", function() {
|
|
$(this).val(BusinessId($(this).val().replace(/[^-\.0-9]/g, "")));
|
|
});
|
|
}
|
|
|
|
//법인번호 포맷
|
|
function BusinessId(str) {
|
|
str = str.replace(/[^0-9]/g, '');
|
|
var tmp = '';
|
|
if (str.length < 6) {
|
|
return str;
|
|
} else {
|
|
tmp += str.substr(0, 6);
|
|
tmp += '-';
|
|
tmp += str.substr(6);
|
|
return tmp;
|
|
}
|
|
return str;
|
|
}
|
|
|
|
//개인사업자 유효성 자동 맞춤
|
|
function onKeyUpBizNo(jObj) {
|
|
if (!jObj) return;
|
|
jObj.on("keyup", function() {
|
|
$(this).val(BusinessNo($(this).val().replace(/[^-\.0-9]/g, "")));
|
|
});
|
|
}
|
|
|
|
//사업자번호 포맷
|
|
function BusinessNo(str) {
|
|
str = str.replace(/[^0-9]/g, '');
|
|
var tmp = '';
|
|
if (str.length < 4) {
|
|
return str;
|
|
} else if (str.length < 7) {
|
|
tmp += str.substr(0, 3);
|
|
tmp += '-';
|
|
tmp += str.substr(3);
|
|
return tmp;
|
|
} else {
|
|
tmp += str.substr(0, 3);
|
|
tmp += '-';
|
|
tmp += str.substr(3, 2);
|
|
tmp += '-';
|
|
tmp += str.substr(5);
|
|
return tmp;
|
|
}
|
|
return str;
|
|
}
|
|
|
|
|
|
/*
|
|
* layer 팝업 열기
|
|
* 페이지마다 modal과, 영역을 넣어야하는 번거러움과
|
|
* selector를 바꿔줘야하는 단첨이 있어 보완하여 기능 추가
|
|
* */
|
|
function commonPopLayeropen(url, popupwidth, popupheight, paramObj, maskYn, target) {
|
|
if (target == undefined || target == '') {
|
|
target = 'layerPop';
|
|
}
|
|
var maskId = target + "_mask";
|
|
if ($("#" + target).length == 0) {
|
|
var ele = $("<div/>").addClass("tooltip-wrap").css({ "display": "none" }).attr("id", target);
|
|
$("body:first").prepend(ele);
|
|
}
|
|
$('#' + target).load(
|
|
url
|
|
, paramObj
|
|
, function(res, status, xhr) {
|
|
if (status == "success") {
|
|
var parentDiv = $("#" + target);
|
|
var innerTarget = $("#" + target).find(".popup_wrap").css({ "width": popupwidth + 'px' });
|
|
var innerPopCont = $("#" + target).find(".popup_cont").css({
|
|
"height": popupheight + 'px!important',
|
|
"max-height": "none"
|
|
});
|
|
|
|
if (popupwidth > screen.width) {
|
|
popupwidth = screen.width;
|
|
}
|
|
|
|
if (popupheight > screen.height) {
|
|
popupheight = screen.height;
|
|
}
|
|
|
|
var top = 0;
|
|
var left = 0;
|
|
|
|
if (isNaN(parseInt(popupwidth))) {
|
|
top = ($(window).height() - 600) / 2;
|
|
left = ($(window).width() - 800) / 2;
|
|
} else {
|
|
top = ($(window).height() - popupheight) / 2;
|
|
left = ($(window).width() - popupwidth) / 2;
|
|
}
|
|
|
|
if (top < 0) top = 0;
|
|
if (left < 0) left = 0;
|
|
|
|
innerTarget.css({ "left": left, "top": top });
|
|
if (maskYn == "Y") {
|
|
parentDiv.after($("<div/>").addClass("mask").attr("id", maskId)).next(".mask").show();
|
|
}
|
|
parentDiv.show();
|
|
innerTarget.show().focus();
|
|
|
|
parentDiv.find(".tooltip-close").off().click(function(e) {
|
|
$("#" + target).remove();
|
|
$("#" + maskId).remove();
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
/*
|
|
* layer 팝업 닫기
|
|
* */
|
|
function commonPopLayerClose() {
|
|
$("[data-focus=list_popup_close]").trigger("click");
|
|
}
|
|
|
|
function commonPopWindowopenForm(surl, popupwidth, popupheight, name, frm) {
|
|
|
|
if (popupwidth > screen.width)
|
|
popupwidth = screen.width;
|
|
|
|
if (popupheight > screen.height)
|
|
popupheight = screen.height;
|
|
|
|
var top = 0;
|
|
var left = 0;
|
|
|
|
if (isNaN(parseInt(popupwidth))) {
|
|
top = (screen.availHeight - 600) / 2;
|
|
left = (screen.availWidth - 800) / 2;
|
|
} else {
|
|
top = (screen.availHeight - popupheight) / 2;
|
|
left = (screen.availWidth - popupwidth) / 2;
|
|
}
|
|
|
|
if (top < 0) top = 0;
|
|
if (left < 0) left = 0;
|
|
|
|
var option = "dependent=yes,fullscreen=no,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,left=" + left + ",top=" + top + ",width=" + popupwidth + ",height=" + popupheight;
|
|
|
|
if (name == null || name == "") { name = "Popup"; }
|
|
window.open("", name, option);
|
|
frm.attr('target', name);
|
|
frm.attr('action', surl);
|
|
frm.method = "post";
|
|
frm.submit();
|
|
// 초기화..
|
|
frm.attr('target', '_self');
|
|
}
|
|
|
|
//휴대폰 번호에 대쉬(-) 추가해주기
|
|
function addDash(str) {
|
|
return str.replace(/(^01[016789]{1}|070)([0-9]{3}|[0-9]{4})([0-9]{4})$/, "$1-$2-$3").replace("--", "-");
|
|
}
|
|
|
|
//null 체크
|
|
function isEmpty(value) {
|
|
if (value == "" || value == null || value == undefined || (value != null && typeof value == "object" && !Object.keys(value).length)) { return true } else { return false }
|
|
|
|
}
|
|
|
|
function isNotEmpty(value) {
|
|
return !isEmpty(value);
|
|
}
|
|
|
|
function isEmptyObj(name) {
|
|
return isEmpty($('#' + name).val());
|
|
}
|
|
|
|
function isNotEmptyObj(name) {
|
|
return isNotEmpty($('#' + name).val());
|
|
}
|
|
|
|
|
|
function onlyNumber(thisObj) {
|
|
thisObj.value = thisObj.value.replace(/[^0-9]/gi, "");
|
|
}
|
|
|
|
function onlyAlphabetNumber(thisObj) {
|
|
thisObj.value = thisObj.value.replace(/[^0-9a-zA-Z\._]/gi, "");
|
|
}
|
|
|
|
function getChkLen(name) {
|
|
return $("input:checkbox[name=" + name + "]:checked").length;
|
|
}
|
|
|
|
//hh:mm 체크
|
|
function isDatetime(d) {
|
|
|
|
var re = /^(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9])$/;
|
|
|
|
return re.test(d);
|
|
}
|
|
|
|
//hh:mm:ss 체크
|
|
function isDatetimeSec(d) {
|
|
|
|
var re = /^(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/;
|
|
|
|
return re.test(d);
|
|
}
|
|
|
|
function setFormat (opt, obj) {
|
|
var formatText = '';
|
|
var num = $(obj).val();
|
|
switch (opt) {
|
|
case 'time':
|
|
formatText = num.replace(/(\d{2})(\d{2})/, '$1:$2');
|
|
break;
|
|
case 'day':
|
|
formatText = num.replace(/(\d{4})(\d{2})(\d{2})/, '$1-$2-$3');
|
|
break;
|
|
}
|
|
|
|
$(obj).val(formatText);
|
|
}
|
|
|
|
// 교육신청서 리포트 화면
|
|
function fn_adjstReq_preview(adrSeq) {
|
|
window.open("/web/kccadr/adjst/report/adjstReqReportAjax.do?adrSeq="+adrSeq);
|
|
}
|
|
|
|
|
|
//텍스트 문자열 길이만 반환
|
|
function conByteLeng(content){
|
|
|
|
var totalByte = 0;
|
|
//한글과 영문을 구분하여 바이트수 계산
|
|
for(var i=0; i< content.length; i++){
|
|
|
|
var currentByte = content.charCodeAt(i);
|
|
if(currentByte > 128){
|
|
|
|
totalByte += 2;
|
|
|
|
}else{
|
|
|
|
totalByte++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return totalByte;
|
|
}
|
|
|
|
function emptyObject(param){
|
|
return Object.keys(param).length === 0;
|
|
}
|
|
|
|
|
|
|