반응형

이번에 AutoComplete 수정하면서 찾아낸 이미지 변경입니다.

#ui-id-1 {오토 컴플리트 창}
.ui-menu-item-wrapper {오토 컴플리트 리스트 화면 수정}
.ui-menu-item-wrapper:hover {오토컴플리트 리스트 hover 시 화면 수정}
.ui-state-active{키보드 선택 시 오토 컴플리트 화면수정}

반응형

대소문자 변경 후 키보드 커서의 위치가 맨 끝으로 가게끔 되버려서 문제가 있었습니다.

 

하코사의 질문을 올렸고 그에 대한 답변을 받아서 아래와 같이 수정 하였습니다.

$(document).on("keyup", "input", function () {
    var vValue = $(this).val();
    var position = this.selectionStart; //현재 포커스 되어있는 곳에 포지션을 둔다.
    $(this).val(vValue.toUpperCase()); //소문자를 대문자로 변경한다.
    this.setSelectionRange(position, position); //포커스 되어있는 곳에 포지션으로 이동한다.
});
$(document).on("keyup", "textarea", function () {
    var vValue = $(this).val();
    var position = this.selectionStart; //현재 포커스 되어있는 곳에 포지션을 둔다.
    $(this).val(vValue.toUpperCase()); //소문자를 대문자로 변경한다.
    this.setSelectionRange(position, position); //포커스 되어있는 곳에 포지션으로 이동한다.
});

 

※하코사의 '삽질하는사람'님 감사합니다 ㅎ

반응형

JavaScript에서 C#으로 데이터를 넘길 때 보통은 FormData를 생성하여 데이터를 이동시켜서 파싱하는 방법이나

Object에 담아서 던지는 방법 2가지를 채택하여 저는 사용합니다.

그 중에서 제일 간편하게 사용하는 방법은 Javascript에서 Json형식으로 데이터를 가공하여 사용하는 편인데요

하지만 오늘 설명 할 것은 Object로 바로 넘겨서 데이터를 파싱 및 해당 Object를 다시 넘겨서 다시 파싱하는 방법을 찾아서 정리 하려고 합니다.

다른 좋은 방법이 더 있다면 댓글로 남겨주세요 ㅎㅎ

JavaScript

※Object로 데이터를 묶어서 C#으로 보냅니다.
=======자바스크립트 예제======

 

var callObj = new Object();

callObj.Option = "데이터";
callObj.Type = "데이터";
callObj.SearchText = "데이터";
callObj.Page = "데이터";

$.ajax({
	type: "POST",
	url: "url",
	async: false,
	dataType: "json",
	data: callObj,
success: function (result) {
	결과
}, error: function (xhr)
	에러
}
});

=====C# 예제======
//C# Object 파라미터를 받을 수 있게 만든 매개변수 함수

public class ParamsData
{
	//JavaScript에서 보낼때 key값과 동일하게 맞춰야됩니다.
	public string Option { get; set; }
	public string Type { get; set; }
	public string SearchText { get; set; }
	public int Page { get; set; }
}

//예제 데이터 ParamsData rtnVal(매개변수명)

public string example(ParamsData rtnVal)
{
	string rtnJson = "";
	try
	{
		if (rtnVal != null)
		{
			string strOpt = rtnVal.Option; //JavaScript에서 만든 Key값 으로 데이터 받을 수 있음.
			string strType = rtnVal.Type;
			string strText = rtnVal.SearchText;
			int pageIndex = rtnVal.Page;

       	 	//다른 함수로 Object 데이터를 넘길 때.
       		Another_function(rtnVal); //다른 메소드로 데이터를 한번에 옮길때 Object 형식으로 보내면 됩니다.
    	}
    	return rtnJson;
	}
	catch (Exception e)
	{
	    return rtnJson;
	}
}

 

//다른 함수 (오브젝트 파싱하여 받기)
※Object 형식을 Json으로 파싱 이후 Json데이터를 dictionary로 변환하여 사용한 예제 입니다.
DataTable로 변환 하려고 하였지만 실패하였고 JObject를 사용하여 Json을 파싱 하였지만 for문으로 돌려서 하나씩 가져와야되는 불편함이 있어서 dictionary를 사용하였습니다.
public string Another_function(object value)
{
//JsonConvert를 사용하기 위해서는 NewtonJson.dll을 Nuget에서 다운받아서 사용하여야 합니다.

var dictionary = JsonConvert.DeserializeObject<Dictionary<string, string>>(JsonConvert.SerializeObject(value).ToString());

	string stringOption = dictionary["Option"].ToString();
	string stringType = dictionary["Type"].ToString();
	string stringSearchText = dictionary["SearchText"].ToString();
	string nPage = dictionary["Page"].ToString();

	return "";

}

 

이상 JavaScript 데이터를 C#으로 C#의 Object 데이터를 다른 함수로 전달해서 사용하는 방법을 정리해 보았습니다.
C# 지식이 짧아 더 좋은 방법이 있는지 까지는 백방으로 찾아보았지만 아직까지는 더 좋은 방법을 찾지는 못하였습니다.

정리한 소스가 다른 분들에게 도움이 됐으면 하네요 ㅎㅎ

반응형

//할증률 계산 Calculation Primium Rate

function fnCal_PR(vValue,vPR) {
	return vValue + (vValue * (vPR / 100));
}

 

※return 에서 vValue * (vPR / 100) 여기 부분만 사용하면 할인 금액으로도 사용 할 수 있습니다.

★return vValue * (vPR / 100);

 

할증률 반올림 추가 - 첫번째 정수 자리수 반올림

function fnCal_PR(vValue,vPR) {
	return Math.round((vValue + (vValue * (vPR / 100))) / 10) * 10;
}

 

할증률 반올림 추가 - 두번째 정수 자리수 반올림

function fnCal_PR(vValue,vPR) {
	return Math.round((vValue + (vValue * (vPR / 100))) / 100) * 100;
}

 

할증률 반올림 추가 - 세번째 정수 자리수 반올림

function fnCal_PR(vValue,vPR) {
	return Math.round((vValue + (vValue * (vPR / 100))) / 1000) * 1000;
}
반응형
"문자열".toLowerCase(); // 소문자로 변환
"문자열".toUpperCase(); // 대문자로 변환
반응형
//왼쪽에 붙은 0 제거하기
function _setLeftZeroRemove(vValue) {
	//영하 온도 입력 시
	var isMinus = vValue.indexOf("-");

	var vVal = vValue.replace(/-/g,"");

	if (vVal.length > 1) {
		vVal = vVal.replace(/(^0+)/, "");        

		if (vVal.length == 0) {
			vVal = 0;
		}
	}

	//영하 마이너스 찍었는지 확인
	if (isMinus > -1) {
		if (vVal != 0) {
			vVal = "-" + vVal;
		}
	}

	return vVal;
}
반응형

2024. 05. 20

- 날짜의 간격을 음수로 받아야 되는 경우가 있어서 해당 부분 주석으로 설명 넣어두었음.

- Math.abs (절대값)을 제거하면 음수로 받을 수 있음.

//날짜 차이 , 간격 일수 함수 (yyyymmdd , yyyy-mm-dd)
function _fnCompareDay(vValue1, vValue2) {
	var rxDatePattern = /^(\d{4})(\d{1,2})(\d{1,2})$/; //Declare Regex    
	
	if (vValue1.length > 7 && vValue2.length > 7) {
	
		//- replaceAll
		var dtArray1 = vValue1.replace(/-/gi, "").match(rxDatePattern); //기준 날짜
		var dtArray2 = vValue2.replace(/-/gi, "").match(rxDatePattern); //비교 날짜
	
		//0 => 현재 날짜 / 1 => yyyy / 2 => mm / 3 => dd
		var vSDate = new Date(parseInt(dtArray1[1]), parseInt(dtArray1[2]) + 1, parseInt(dtArray1[3]));
		var vEDate = new Date(parseInt(dtArray2[1]), parseInt(dtArray2[2]) + 1, parseInt(dtArray2[3]));
	
    		//추가 : 만약 날짜 차이를 음수로 받고 싶다면 Math.abs를 제거
		var vGapDay = Math.abs(vEDate.getTime() - vSDate.getTime());
		vGapDay = Math.ceil(vGapDay / (1000 * 3600 * 24));
	
		return vGapDay;
	} else {
		return "N";
	}
}
반응형
function _setLeftZeroRemove(vValue) {
	var vVal = vValue;

	if (vVal.length > 1) {
		vVal = vVal.replace(/(^0+)/, "");

		if (vVal.length == 0) {
			vVal = 0;
		}
	} 

	return vVal;
}

2자리수 이상 일 경우 앞에 0으로 시작하면 없애주는 로직

 

 

+ Recent posts