공용 자바스크립트 - common_u
/*****************************************************************************************
* 함 수 명 : gfn_IsNull
* 입 력 : 1. sValue - String
* 반 환 : Boolean
* 기 능 : Null Check
*****************************************************************************************/
function gfn_IsNull(sValue)
{
if (new String(sValue).valueOf() == "undefined") return true;
if (sValue == null) return true;
var v_ChkStr = new String(sValue);
if (v_ChkStr == null) return true;
if (v_ChkStr.toString().length == 0 ) return true;
return false;
}
/*****************************************************************************************
* 함 수 명 : gfn_GetLengthByte
* 입 력 : 1. sValue - 문자열
* 반 환 : 문자열 길이(Byte)를 반환.
* 기 능 : 입력된 문자의 문자열 길이를 Byte로 반환한다.
*****************************************************************************************/
function gfn_GetLengthByte(sValue)
{
var v_ChkStr = sValue.toString();
var v_cnt = 0;
for (var i=0; i<v_ChkStr.length; i++)
{
if (v_ChkStr.charCodeAt(i) > 127)
{
v_cnt += 2;
} else {
v_cnt += 1;
}
}
return v_cnt;
}
/*****************************************************************************************
* 함 수 명 : gfn_NumFormat(nNumber)
* 입 력 : 1. nNumber - 문자열로 출력할 실수
* 2. nDetail - 출력시 소숫점 이하의 자릿수.(반올림함)
* 반 환 : 문자열로 바뀐 실수.
* 기 능 : 출력되는 실수는 정해진 소숫점 자릿수를 가지며, 정수부분에는
* 3자리마다 ',' 가 삽입됩니다.
*****************************************************************************************/
function gfn_NumFormat(nNumber,nDetail)
{
if (nNumber == null) return "";
if (nDetail == null) nDetail = 0;
nNumber = parseFloat(nNumber);
nNumber = Math.round(nNumber, nDetail);
var strNumber = new String(nNumber);
var arrNumber = strNumber.split(".");
var strFormatNum = "";
var j = 0;
for ( i = arrNumber[0].length - 1; i >= 0; i--)
{
if (i != strNumber.length && j == 3)
{
strFormatNum = arrNumber[0].charAt(i) + "," + strFormatNum;
j = 0;
}
else
{
strFormatNum = arrNumber[0].charAt(i) + strFormatNum;
}
j++;
}
if (arrNumber.length > 1) strFormatNum = strFormatNum + "." + arrNumber[1];
return strFormatNum;
}
/*****************************************************************************************
* 함 수 명 : gfn_GetDateToStr
* 입 력 : 1. date
* 반 환 : 'yyyyMMdd' 형태로 표현된 날짜
* 기 능 : Date Type을 String으로 변환
*****************************************************************************************/
function gfn_GetDateToStr(date)
{
var strYear = date.getYear().toString();
var strMonth = (date.getMonth()+1).toString();
var strDate = date.getDate().toString();
if(strYear.length==2)
strYear = '19'+strYear;
else if(strYear.length==1)
strYear = '190'+strYear;
if(strMonth.length==1)
strMonth = '0'+strMonth;
if(strDate.length==1)
strDate = '0'+strDate;
return strYear+strMonth+strDate;
}
/*****************************************************************************************
* 함 수 명 : gfn_AddDate
* 입 력 : 1. strDate : 'yyyyMMdd' 형태로 표현된 날짜.
* 2. nOffSet : 날짜로부터 증가 감소값.
* 반 환 : date의 문자열 (ex. 20080821)
* 기 능 : 입력된 날짜에 OffSet 으로 지정된 만큼의 날짜를 더함
*****************************************************************************************/
function gfn_AddDate(strDate, nOffSet)
{
var date = new Date();
date.setYear(strDate.substr(0, 4));
date.setMonth(strDate.substr(4, 2)-1);
date.setDate(strDate.substr(6, 2)-(nOffSet*-1));
return gfn_GetDateToStr(date);
}
/*****************************************************************************************
* 함 수 명 : gfn_AddMonth
* 입 력 : 1. strMonth : 'yyyyMM' 형태로 표현된 날짜.
* 2. nOffSet : 해당월로부터 증가 감소값.
* 반 환 : date의 문자열 (ex. 200808)
* 기 능 : 입력된 월에 OffSet 으로 지정된 만큼의 월을 더함
*****************************************************************************************/
function gfn_AddMonth(strMonth, nOffSet)
{
var date = new Date();
date.setYear(strMonth.substr(0, 4));
date.setMonth(strMonth.substr(4, 2)-1-(nOffSet*-1));
return gfn_GetDateToStr(date).substr(0, 6);
}
/*****************************************************************************************
* 함 수 명 : gfn_GetMonthLastDay
* 입 력 : 1. strMonth : 'yyyyMMdd' 형태로 표현된 날짜.
* 반 환 : 해당월의 마지막일자
* 기 능 : 입력일자 해당월의 마지막 일
*****************************************************************************************/
function gfn_GetMonthLastDay(strMonth)
{
var iLastDay;
var iYear = parseInt(strMonth.substr(0, 4),10) ;
var iMonth = parseInt(strMonth.substr(4, 2),10);
switch(iMonth)
{
case 2 :
if( ((iYear%4)==0) && ((iYear%100)!=0) || ((iYear%400)==0) )
iLastDay = 29;
else
iLastDay = 28;
break;
case 4 :
case 6 :
case 9 :
case 11 :
iLastDay = 30;
break;
default:
iLastDay = 31;
break;
}
return iLastDay;
}
/*****************************************************************************************
* 함 수 명 : gfn_GetDay
* 입 력 : 1. strDate : 'yyyyMMdd' 형태로 표현된 날짜.
* 반 환 : 요일에 따른 숫자.
* 0 = 일요일 ~ 6 = 토요일. 오류가 발생할 경우 -1 Return.
* 기 능 : 입력된 날자로부터 요일을 구함
*****************************************************************************************/
function gfn_GetDay(strDate)
{
var date = new Date();
date.setYear(strDate.substr(0, 4));
date.setMonth(strDate.substr(4, 2) - 1);
date.setDate(strDate.substr(6, 2));
return date.getDay();
}
/*****************************************************************************************
* 함 수 명 : gfn_GetDayWeek
* 입 력 : 1. strDate : 'yyyyMMdd' 형태로 표현된 날짜.
* 2. strType - 0(숫자: 일요일부터 시작), 1(한글), 2(한문)
* 반 환 : strType에 따라 요일 반환
* 0 = 일요일 ~ 6 = 토요일. 오류가 발생할 경우 -1 Return.
* 기 능 : 요일 반환
*****************************************************************************************/
function gfn_GetDayWeek(strDate,strType)
{
if (strType == null) strType = "0";
var date = new Date();
date.setYear(strDate.substr(0, 4));
date.setMonth(strDate.substr(4, 2) - 1);
date.setDate(strDate.substr(6, 2));
var nDayWeek = date.getDay();
var strDayWeek;
switch(strType)
{
case "0":
strDayWeek = nDayWeek;
break;
case "1":
strDayWeek = arrDayWeek1[nDayWeek];
break;
case "2":
strDayWeek = arrDayWeek2[nDayWeek];
break;
}
return strDayWeek;
}
/*****************************************************************************************
* 함 수 명 : gfn_GetDiffDate
* 입 력 : 1. sStartDate : yyyyMMdd형태의 From 일자 ( 예 : "20121122" )
* 2. sEndDate : yyyyMMdd형태의 To 일자 ( 예 : "20121202" )
* 반 환 : 숫자 형태의 차이일수 ( 예 : 10 )
* 단, sEndDate < sStartDate이면 음수가 return된다.
* 기 능 : 두 일자간의 차이 일수 계산
*****************************************************************************************/
function gfn_GetDiffDate(sStartDate, sEndDate)
{
var vFromDate = new Date(parseInt(sEndDate.substring(0,4), 10), parseInt(sEndDate.substring(4,6)-1, 10), parseInt(sEndDate.substring(6,8), 10));
var vToDate = new Date(parseInt(sStartDate.substring(0,4), 10), parseInt(sStartDate.substring(4,6)-1, 10), parseInt(sStartDate.substring(6,8), 10));
return parseInt((vFromDate - vToDate)/(1000*60*60*24));
}
/*****************************************************************************************
* 함 수 명 : gfn_GetDiffMonth
* 입 력 : 1. sStartDate : yyyyMMdd형태의 From 일자 ( 예 : "20121122" )
* 2. sEndDate : yyyyMMdd형태의 To 일자 ( 예 : "20121202" )
* 반 환 : 숫자 형태의 차이월수 ( 예 : 10 )
* 단, sEndDate < sStartDate이면 음수가 return된다.
* 기 능 : 두 월간의 차이 월수 계산
* 단, sStartDate, sEndDate의 일은 포함하지 않고 계산된다.
*****************************************************************************************/
function gfn_GetDiffMonth(sStartDate, sEndDate)
{
var nStartMon, nEndMon;
nStartMon = parseInt(sStartDate.substr(0,4), 10)*12 + parseInt(sStartDate.substr(4,2), 10);
nEndMon = parseInt(sEndDate.substr(0,4), 10)*12 + parseInt(sEndDate.substr(4,2), 10);
return (nEndMon - nStartMon);
}
/*****************************************************************************************
* 함 수 명 : gfn_IsJuminNo
* 입 력 : 1. sJuminNo : 주민번호
* 반 환 : return 정상 true 1 / 비정상 false 0
* 단, sEndDate < sStartDate이면 음수가 return된다.
* 기 능 : 주민번호를 확인한다.
*****************************************************************************************/
function gfn_IsJuminNo(sJuminNo)
{
var birthYear = gfn_GetBirthYear(sJuminNo);
birthYear += sJuminNo.substr(0, 2);
var birthMonth = sJuminNo.substr(2, 2)-1;
var birthDate = sJuminNo.substr(4, 2);
var birth = new Date(birthYear, birthMonth, birthDate);
if ( birth.getYear() % 100 != sJuminNo.substr(0, 2) ||
birth.getMonth() != birthMonth ||
birth.getDate() != birthDate)
{
alert("잘못된 주민등록번호입니다. 년도"); return; //
}
// Check Sum 코드의 유효성 검사
buf = new Array(13);
for (i = 0; i < 6; i++) buf[i] = parseInt(sJuminNo.charAt(i));
for (i = 6; i < 13; i++) buf[i] = parseInt(sJuminNo.charAt(i));
multipliers = [2,3,4,5,6,7,8,9,2,3,4,5];
for (i = 0, sum = 0; i < 12; i++) sum += (buf[i] *= multipliers[i]);
if ((11 - (sum % 11)) % 10 != buf[12]) {
return 0;
}else{
return 1;
}
}
/*****************************************************************************************
* 함 수 명 : gfn_GetBirthYear
* 입 력 : 1. sJuminNo : 생년 월일 또는 주민 번호
* 반 환 : return true/false
* 기 능 : 주민번호 뒷 첫번째 자리로 년대를 return 한다.
*****************************************************************************************/
function gfn_GetBirthYear(sJuminNo)
{
if (sJuminNo.toString().length != 13)
{
alert("주민번호를 확인해주세요.!!");
return "N";
}
if (!(sJuminNo).match(/^\d{6}\d{7}$/)) {
alert("잘못된 주민등록번호입니다.!!");
return "N";
}
var vGb = sJuminNo.substr(6,1);
if (vGb == '1' || vGb == '2' || vGb == '5' || vGb == '6') {
return '19';
} else if (vGb == '3' || vGb == '4' || vGb == '7' || vGb == '8') {
return '20';
}
}
/*****************************************************************************************
* 함 수 명 : gfn_IsCustNo
* 입 력 : 1. strCustNo : 사업자번호(-제외) strCustNo는 숫자만 10자리로 해서 문자열로 넘긴다.
* 반 환 : return true/false
* 기 능 : 사업자번호 유효성 검사.
*****************************************************************************************/
function gfn_IsCustNo(strCustNo)
{
if (strCustNo.length != 10) return false;
else {
var checkID = new Array(1, 3, 7, 1, 3, 7, 1, 3, 5, 1);
var tmpcustNo, i, chkSum=0, c2, remander;
for (i=0; i<=7; i++) chkSum += checkID[i] * strCustNo.charAt(i);
c2 = "0" + (checkID[8] * strCustNo.charAt(8));
c2 = c2.substring(c2.length - 2, c2.length);
chkSum += Math.floor(c2.charAt(0)) + Math.floor(c2.charAt(1));
remander = (10 - (chkSum % 10)) % 10 ;
if (Math.floor(strCustNo.charAt(9)) == remander) return true; // OK!
return false;
}
return true;
}
/*****************************************************************************************
* 함 수 명 : gfn_ValueCheck
* 입 력 : 1. Dataset : DataSet(Object)
* 2. Col Id : Col Id ex) "SAMPLE_ID1=SAMPLE_NM1,SAMPLE_ID2=SAMPLE_NM2"
* 반 환 : return true/false
* 기 능 : 입력된 그리드의 컬럼값 NULL CHECK
*****************************************************************************************/
function gfn_ValueCheck(objDs, strColid)
{
for(var i=0; i<objDs.getColCount(); i++)
{
var objArr1; // Array
objArr1 = strColid.split(",");
for(var j=0; j<objArr1.length; j++)
{
var objArr2; // Array
objArr2 = objArr1[j].split("=");
if(objDs.getColID(i) == objArr2[0]){
var nIdx = objDs.findRow(objArr2[0],"");
if(nIdx > -1){
if(objDs.getRowType(nIdx) == 2 || objDs.getRowType(nIdx) == 4){
if(gfn_IsNull(objDs.getColumn(nIdx,objArr2[0]))){
alert(objArr2[1] + " 을/를 입력하세요.");
return false;
break;
}
}
}
}
}
}
return true;
}
/*******************************************************************************
* 함수명 : gfn_getToday
* 설명 : 오늘날짜 구하는 함수.
* argument :
* return Type : - 해당날짜를 리턴.
******************************************************************************/
function gfn_getToday()
{
var d = new Date();
var s = d.getFullYear()
+ ((d.getMonth() + 1) + "").padLeft(2, '0')
+ (d.getDate() + "").padLeft(2, '0');
return (s);
}
/*******************************************************************************
* 함수명 : gfn_getFirstDate
* 설명 : 현재월 1일 만들기.
* argument :
* return Type : 해당날짜를 리턴.
******************************************************************************/
function gfn_getFirstDate(strDate)
{
var s = "";
if (strDate == null) {
s = getToday().substr(0,6) + "01";
}
else {
var date = new Date(parseInt(strDate.substr(0,4)),parseInt(strDate.substr(4,2))-1,1);
s = (new Date(date)).getFullYear()
+ (((new Date(date)).getMonth()+1)+ "").padLeft(2, '0')
+ ((new Date(date)).getDate() + "").padLeft(2, '0');
}
return (s);
}
/*******************************************************************************
* 함수명 : gfn_getLastDateStr
* 설명 : 현재월 마지막일 만들기.
* argument :
* return Type : 해당날짜를 리턴.
******************************************************************************/
function gfn_getLastDateStr(strDate)
{
var s = "";
if (strDate == null) {
var date = (new Date()).addMonth(1);
}
else {
var date = new Date(parseInt(strDate.substr(0,4)),parseInt(strDate.substr(4,2)),1);
}
date = (new Date(date)).addDate((new Date(date)).getDate()*-1);
s = (new Date(date)).getFullYear()
+ (((new Date(date)).getMonth() + 1) + "").padLeft(2, '0')
+ ((new Date(date)).getDate() + "").padLeft(2, '0');
return (s);
}
/*******************************************************************************
* 함수명 : gfn_strDate
* 설명 : 문자를 날짜로 변환.
* argument :
* return Type : 해당날짜를 리턴.
******************************************************************************/
function gfn_strDate(inDate)
{
var date = new Date(parseInt(inDate.substr(0,4)),parseInt(inDate.substr(4,2))-1,parseInt(inDate.substr(6,2)));
return date;
}
/*******************************************************************************
* 함수명 : gfn_getLastMonth
* 설명 : 한달전 날짜 구하는 함수.
* argument :
* return Type : 해당날짜를 리턴.
******************************************************************************/
function gfn_getLastMonth(strDate) {
if (strDate) {
var date = gfn_strDate(strDate);
var d = (new Date(date)).addMonth(-1);
}
else {
var d = (new Date).addMonth(-1);
}
var s = (new Date(d)).getFullYear()
+ (((new Date(d)).getMonth() + 1) + "").padLeft(2, '0')
+ (((new Date(d)).getDate()) + "").padLeft(2, '0');
return (s);
}
/*******************************************************************************
* 함수명 : gfn_getOneMonthAfter
* 설명 : 한달후 날짜 구하는 함수.
* argument :
* return Type : 해당날짜를 리턴.
******************************************************************************/
function gfn_getOneMonthAfter(strDate) {
if (strDate) {
var date = gfn_strDate(strDate);
var d = (new Date(date)).addMonth(1);
}
else {
var d = (new Date).addMonth(1);
}
var s = (new Date(d)).getFullYear()
+ (((new Date(d)).getMonth() + 1) + "").padLeft(2, '0')
+ (((new Date(d)).getDate()) + "").padLeft(2, '0');
return (s);
}
/*******************************************************************************
* 함수명 : gfn_FixLength
* 설명 : Grid에서 정수부와 소수부 자릿수를 제한하는 함수
* argument : 1. e Grid Event
2. length1 정수부 자릿수
3. length2 소수부 자릿수
* return Type :
******************************************************************************/
function gfn_FixLength(e, length1, length2)
{
var i;
var arrTemp = e.posttext.split(".");
if(arrTemp[0].length>length1)
{
return false;
}
if(arrTemp.length==2)
{
if(arrTemp[1].length>length2)
{
return false;
}
}
return true;
}
/*******************************************************************************
* 함수명 : gfn_IsNullZero
* 설명 : Dataset에서 Null 값을 0으로 치환하는 함수
* argument : 1. obj Dataset Object
2. e Dataset Event
* return Type :
******************************************************************************/
function gfn_IsNullZero(obj,e)
{
var newValue = new String(e.newvalue);
if(newValue=="0"||newValue==""||gfn_IsNull(newValue)==true){
obj.setColumn(e.row, e.columnid, "0");
}
}
/*******************************************************************************
* 함수명 : gfn_Debug(objDs, objForm)
* 설명 : Dataset Debug
* argument : 1. objDs Dataset Object
2. objForm Form Object
* return Type :
******************************************************************************/
function gfn_Debug(objDs)
{
gfn_Dialog(objDs, -1, -1, 380, 394,"CommForm::COMM_DEBUG.xfdl",false,{objDs:objDs},false,true,true);
}
'Web > javascript / jQuery' 카테고리의 다른 글
Grunt 소개 및 사용법 (173) | 2016.06.20 |
---|---|
숫자 자릿수 맞추기. (637) | 2016.05.31 |
내 기준 유용한 js / jquery 플러그인 (4) | 2016.05.23 |
Remove all child elements of a DOM node in JavaScript (4) | 2016.03.28 |
팝업 닫기열기(popup layer) (4) | 2016.02.25 |