반응형

똑같은 Name으로 2개의 Select가 있을 경우 Change 함수를 이용하여 한번에 2개 데이터를 바꾸고, Selected 값도 바꾸는 로직

$(document).on("change", "select[name='select_SolutionQ_Email']", function () {
	//pc와 mo의 데이터 동기화
	$("input[name='SolutionQ_Email2']").eq(0).val($(this).find('option:selected').val()); //pc
	$("input[name='SolutionQ_Email2']").eq(1).val($(this).find('option:selected').val()); //mo

	//선택한 값의 index 번호를 가져와서 동일한 name의 select 태그의 index의 option으로 selected 시켜주는 로직 입니다.
	$("select[name='select_SolutionQ_Email']").eq(0).find("option").eq($(this).find('option:selected').index()).attr('selected', 'selected');
	$("select[name='select_SolutionQ_Email']").eq(1).find("option").eq($(this).find('option:selected').index()).attr('selected', 'selected');
});

 

 

 

 

반응형

IE에서는 Window.open의 fullscreen 옵션이 되지만 크롬에서는 잘 되지 않는 경우가 많다.

 

아래와 같이 사용하면 새창의 전체화면으로 열수 있다.

window.open('URL','title','width=' + screen.width + ','height=' + screen.height + ',fullscreen=yes');



 

 

반응형
function _getParameter(param) 
{
	var returnValue = '';
	// 파라미터 파싱
	var url = location.href;
	var params = (url.slice(url.indexOf('?') + 1, url.length)).split('&');
	for (var i = 0; i < params.length; i++) 
	{
		var varName = params[i].split('=')[0];
		//파라미터 값이 같으면 해당 값을 리턴한다
		if (varName.toUpperCase() == param.toUpperCase()) 
		{
			returnValue = _fnToNull(params[i].split('=')[1]);
			if (returnValue == "") 
			{
				returnValue = "none"
			}
			return decodeURIComponent(returnValue);
		}
	}
	return returnValue;
}
반응형
var startDate = new Date(new Date().getFullYear(), new Date().getMonth() + 1, 1);
var endDate = new Date(new Date().getFullYear(), new Date().getMonth() + 1, 0);

var startOfDay = startOfDay.getFullYear() + "-" + startOfDay.getMonth() + "-" + startOfDay.getDate()
var endOfDay = endOfDay.getFullYear() + "-" + startOfDay.getMonth() + "-" + endOfDay.getDate()

결과 : yyyy-m-d

 

만약 8자리로 쓰고싶으면 아래 _pad 함수에 넣어서 쓰면 됩니다.

var startOfDay = startOfDay.getFullYear() + "-" + _pad(startOfDay.getMonth(),2) + "-" + _pad(startOfDay.getDate(),2);
var endOfDay = endOfDay.getFullYear() + "-" + _pad(startOfDay.getMonth(),2) + "-" + _pad(endOfDay.getDate(),2);

결과 yyyy-mm-dd

function _pad(n, width) {
    n = n + '';
    return n.length >= width ? n : new Array(width - n.length + 1).join('0') + n;
}
반응형

[2021.04.23 추가]

생각보다 많이 찾아주셔서 추가 설명 합니다.

_fnisDate에는 yyyy-mm-dd 식으로 보내도 되고 yyyymmdd 식으로 보내도 상관 없습니다.

//날짜 유효성 체크 (윤달 포함)
function _fnisDate(vDate) {
	var vValue = vDate;
	var vValue_Num = vValue.replace(/[^0-9]/g, ""); //숫자를 제외한 나머지는 예외처리 합니다.
	
    //_fnToNull 함수는 아래 따로 적어두겠습니다. 
	if (_fnToNull(vValue_Num) == "") {
		alert("날짜를 입력 해 주세요.");
		return false;
	}

	//8자리가 아닌 경우 false
	if (vValue_Num.length != 8) {
		alert("날짜를 20200101 or 2020-01-01 형식으로 입력 해 주세요.");
		return false;
	}
	
    //8자리의 yyyymmdd를 원본 , 4자리 , 2자리 , 2자리로 변경해 주기 위한 패턴생성을 합니다.
	var rxDatePattern = /^(\d{4})(\d{1,2})(\d{1,2})$/; 
	var dtArray = vValue_Num.match(rxDatePattern); 

	if (dtArray == null) {
		return false;
	}

	//0번째는 원본 , 1번째는 yyyy(년) , 2번재는 mm(월) , 3번재는 dd(일) 입니다.
	dtYear = dtArray[1];
	dtMonth = dtArray[2];
	dtDay = dtArray[3];

	//yyyymmdd 체크
	if (dtMonth < 1 || dtMonth > 12) {
		alert("존재하지 않은 월을 입력하셨습니다. 다시 한번 확인 해주세요");
		return false;
	}
	else if (dtDay < 1 || dtDay > 31) {
		alert("존재하지 않은 일을 입력하셨습니다. 다시 한번 확인 해주세요");
		return false;
	}
	else if ((dtMonth == 4 || dtMonth == 6 || dtMonth == 9 || dtMonth == 11) && dtDay == 31) {
		alert("존재하지 않은 일을 입력하셨습니다. 다시 한번 확인 해주세요");
		return false;
	}
	else if (dtMonth == 2) {
		var isleap = (dtYear % 4 == 0 && (dtYear % 100 != 0 || dtYear % 400 == 0));
		if (dtDay > 29 || (dtDay == 29 && !isleap)) {
			alert("존재하지 않은 일을 입력하셨습니다. 다시 한번 확인 해주세요");
			return false;
		}
	}

	return true;
}

_fnToNull 

데이터가 들어왔을떄 undefined 혹은 null일 경우 빈칸으로 넘기는 공통 함수 입니다.

//Null 값 ""
function _fnToNull(data) {
    // undifined나 null을 null string으로 변환하는 함수. 
    if (String(data) == 'undefined' || String(data) == 'null') {
        return ''
    } else {
        return data
    }
}
반응형
// EX) fnSetWeekDate("20201202","1week");

function fnSetWeekDate(vNow, vDate) 
{
	var vPrevDate;
	//var vNowDate = new Date().getFullYear() + "-" + _pad(new Date().getMonth() + 1, 2) + "-" + + _pad(new Date().getDate(), 2);

	var vYYYY = vNow.substring(0, 4);
	var vMM = vNow.substring(4, 6);
	var vDD = vNow.substring(6, 8);

	var d = new Date(vMM+"/"+vDD+"/"+vYYYY);
	var dayOfMonth = d.getDate();
	var monthOfYear = d.getMonth();

	if (vDate == "1week") 
	{
		d.setDate(dayOfMonth + 7);
		vPrevDate = d.getFullYear() + _pad(d.getMonth() + 1, 2) + _pad(d.getDate(), 2);
	}
	else if (vDate == "1month") 
	{
		d.setMonth(monthOfYear + 1);
		vPrevDate = d.getFullYear() + _pad(d.getMonth() + 1, 2) + _pad(d.getDate(), 2);
	}
	else if (vDate == "3month") 
	{
		d.setMonth(monthOfYear + 3);
		vPrevDate = d.getFullYear() + _pad(d.getMonth() + 1, 2) + _pad(d.getDate(), 2);
	}

	return vPrevDate;
}

 

_pad 함수

//숫자 width만큼 앞에 0 붙혀주는 함수 EX) widht = 2일떄 1은 01로 찍힘
function _pad(n, width) {
    n = n + '';
    return n.length >= width ? n : new Array(width - n.length + 1).join('0') + n;
}
반응형
//시간 시간:분분 format 만들기
function _fnFormatTime(vTime)
{
    if (String(vTime).length > 3) {
        return String(vTime).replace(/(\d{2})(\d{2})/, '$1:$2');
    }
    else {
        var vValue = "0" + String(vTime)
        return vValue.replace(/(\d{2})(\d{2})/, '$1:$2');
    }
}
반응형
//날짜 입력 시 무슨 요일인지 찾아주는 함수
function _fnGetWhatDay(vDate) {

    if (String(vDate).length != 8) {
        return vDate;
    }
    else
    {
        var vformat = String(vDate);
        vformat = vformat.replace(/(\d{4})(\d{2})(\d{2})/, '$1-$2-$3'); 

        var week = ['일', '월', '화', '수', '목', '금', '토'];
        var dayOfWeek = week[new Date(vformat).getDay()];

        return dayOfWeek;
    }    
}

+ Recent posts