jQuery

반응형
//선택한 주문상품 배열 생성 2015.03.19 -add lee.jong.pil
var fnChkGoodsParam = function(){
	//주문상품 재계산 배열
	var goodsArray = new Array();	

	$("input[name^='cart_chk']").each(function(){
		var $parent = $(this).parent();
		var goodsParam = {};

		if($(this).is(":checked")){
			goodsParam.GOODS_NO 			 = $parent.find("#goods_no").val(); 
			goodsParam.GOODS_CUST_SALE_PRICE = $parent.find("#goods_Cust_Sale_Price").val(); 
			goodsParam.GOODS_SALE_PRICE 	 = $parent.find("#goods_Sale_Price").val(); 

			goodsParam.GOODS_DC_PRICE_TOT 	 = $parent.find("#goods_Dc_Price_Tot").val(); 
			goodsParam.GOODS_DC_PRICE 		 = $parent.find("#goods_dc_price").val(); 
			goodsParam.GOODS_DC_PRICE1   	 = $parent.find("#goods_dc_price1").val(); 
			goodsParam.GOODS_DC_PRICE2       = $parent.find("#goods_dc_price2").val(); 
			goodsParam.GOODS_DC_PRICE_STAFF  = $parent.find("#goods_dc_priceStaff").val(); 

			goodsParam.GOODS_DLVF_ST             = $parent.find("#goods_Dlvf_St").val(); 
			goodsParam.GOODS_DLVF_COST        = $parent.find("#goods_Dlvf_Cost").val(); 
			goodsParam.GOODS_DLVF_POLICY_NO  = $parent.find("#goods_Dlvf_Policy_No").val(); 
			goodsParam.GOODS_VIR_VEND_NO     = $parent.find("#vir_vend_no").val(); 
			
			goodsArray.push(goodsParam);
		}
		//배송비 노출영역 초기화(벤더별)
		$("div.calcul-content").find('#'+$parent.find("#vir_vend_no").val()).find('.price').text("0");
	});

	//(2)선택된 상품 기준 주문금액 재계산
	fnGoodsReCalcAmt(goodsArray);
}


//선택 상품 주문금액 재계산 
var fnGoodsReCalcAmt = function(goodsArray){
	//배송비 정책번호 기준으로 배열 정렬
	goodsArray.sort(function(a, b){
		return a.GOODS_DLVF_POLICY_NO-b.GOODS_DLVF_POLICY_NO;
	});

	//console.dir("goodsArrays ===> " + JSON.stringify(goodsArray));
	
	var goodsCustSalePriceAmt = 0;		//고객판매가 총금액
	var goodsSalePriceAmt = 0;			//상품 판매가 총금액
	var goodsDcPriceAmt	= 0;			//프로모션 총할인 금액
	var goodsDcPrice = 0;				//회원할인
	var goodsDcPrice1 = 0;				//월령할인
	var goodsDcPrice2 = 0;				//프리미엄할인
	var goodsDcPriceStaff = 0;			//임직원할인
	var goodsReCalcDlvfCostAmt = 0;		//재계산 배송비 합계
		
	var tmpDlvfPolicyNo = 0; 			//직전 배송비정책
	var tmpGoodsCustSalePrice = 0;		//직전 고객판매가

	//배송비 재계산
	$.each(goodsArray, function(i) {
		var goodsDlvfPolicyNo 		= goodsArray[i].GOODS_DLVF_POLICY_NO;
		var goodsCustSalePrice 		= goodsArray[i].GOODS_CUST_SALE_PRICE;
		
		//1.배송비 정책 동일한 경우
		if(tmpDlvfPolicyNo == goodsDlvfPolicyNo){
			//재계산된 배송비 초기화
			if(goodsArray[i-1]["GOODS_RECALC_DLVF_COST"] > 0){
				$.each(goodsArray, function(j) {
					if(goodsArray[j].GOODS_DLVF_POLICY_NO == goodsDlvfPolicyNo){
						goodsArray[j]["GOODS_RECALC_DLVF_COST"] = "0";
					}								
				});
			}
			
			//직전 정책번호의 고객판매가 금액 조회
			if(tmpGoodsCustSalePrice == 0){
				tmpGoodsCustSalePrice = goodsArray[i-1].GOODS_CUST_SALE_PRICE;
			}
			
			var sumGoodsCustSalePrice = cmmCalc(tmpGoodsCustSalePrice, "+", goodsCustSalePrice);
						
			//1.동일정책 고객판매가 합산 : 기준정책금액 비교
			if(parseInt(sumGoodsCustSalePrice) >= parseInt(goodsArray[i].GOODS_DLVF_ST)){
				//1-1.동일정책 고객판매가 합산금액 >= 기준정책금액
				goodsArray[i]["GOODS_RECALC_DLVF_COST"] = "0";
			}else{
				//1-2.동일정책 고객판매가 합산금액 < 기준정책금액
				goodsArray[i]["GOODS_RECALC_DLVF_COST"] = goodsArray[i].GOODS_DLVF_COST;
			};

			tmpGoodsCustSalePrice = sumGoodsCustSalePrice;		//동일정책 고객판매가 합산
			
		}else{ //배송비정책 동일하지 않은 경우 (최초에도 실행)
			
			//2.고객판매가  : 기준정책금액 비교
			if(parseInt(goodsArray[i].GOODS_CUST_SALE_PRICE) < parseInt(goodsArray[i].GOODS_DLVF_ST)){
				//2-1.고객판매가  < 기준정책금액 (기준배송비 부과)
				goodsArray[i]["GOODS_RECALC_DLVF_COST"] = goodsArray[i].GOODS_DLVF_COST;
			}else{
				//2-2.고객판매가 > 기준정책금액 (배송비 0)
				goodsArray[i]["GOODS_RECALC_DLVF_COST"] = "0";
			};

			tmpGoodsCustSalePrice = 0;							//동일정책 고객판매가 초기화
		}

		tmpDlvfPolicyNo  =  goodsDlvfPolicyNo;		//배송비정책
	});
		
	//console.dir("goodsArrays ===> " + JSON.stringify(goodsArray));

	//주문금액합산	
	$.each(goodsArray, function(k){
		goodsCustSalePriceAmt 	= cmmCalc(goodsCustSalePriceAmt, "+", goodsArray[k].GOODS_CUST_SALE_PRICE);
		goodsSalePriceAmt 		= cmmCalc(goodsSalePriceAmt, 	 "+", goodsArray[k].GOODS_SALE_PRICE);
		goodsDcPriceAmt 		= cmmCalc(goodsDcPriceAmt, 		 "+", goodsArray[k].GOODS_DC_PRICE_TOT);
		goodsDcPrice 			= cmmCalc(goodsDcPrice, 		 "+", goodsArray[k].GOODS_DC_PRICE);
		goodsDcPrice1 			= cmmCalc(goodsDcPrice1, 		 "+", goodsArray[k].GOODS_DC_PRICE1);
		goodsDcPrice2 			= cmmCalc(goodsDcPrice2, 		 "+", goodsArray[k].GOODS_DC_PRICE2);
		goodsDcPriceStaff 		= cmmCalc(goodsDcPriceStaff, 	 "+", goodsArray[k].GOODS_DC_PRICE_STAFE);
		goodsReCalcDlvfCostAmt 	= cmmCalc(goodsReCalcDlvfCostAmt,"+", goodsArray[k].GOODS_RECALC_DLVF_COST);		
		
		var goodsVirVendNo		= goodsArray[k].GOODS_VIR_VEND_NO;
		var goodsDlvfRCostName	= goodsArray[k].GOODS_RECALC_DLVF_COST == 0 ? "무료배송" : toCurrency(goodsArray[k].GOODS_RECALC_DLVF_COST)+"원";
		
		//이전 벤더사별 배송비 
		var prevGoodsVirVendPrice = cmmCalc($("div.calcul-content").find('#'+goodsVirVendNo).find('.price').text(), "+", goodsArray[k].GOODS_RECALC_DLVF_COST);			
		$("div.calcul-content").find('#'+goodsVirVendNo).find('.price').text(toCurrency(prevGoodsVirVendPrice));
		$("div.shipping-area."+goodsArray[k].GOODS_NO).text(goodsDlvfRCostName);			
		
	});	

	//재계산 주문금액 노출
	$("em.goodsCustSalePriceAmt").text(toCurrency(cmmCalc(goodsCustSalePriceAmt, "+", goodsReCalcDlvfCostAmt)));
	$("em.goodsSalePriceAmt").text(toCurrency(goodsSalePriceAmt));			
	$("em.goodsDcPriceAmt").text(toCurrency(goodsDcPriceAmt));				
	$("em.goodsDcPrice").text(toCurrency(goodsDcPrice));						
	$("em.goodsDcPrice1").text(toCurrency(goodsDcPrice1));
	$("em.goodsDcPrice2").text(toCurrency(goodsDcPrice2));
	$("em.goodsDcPriceStaff").text(toCurrency(goodsDcPriceStaff));
	$("em.goodsReCalcDlvfCostAmt").text(toCurrency(goodsReCalcDlvfCostAmt));
}

$("[name^=cart_chk]").bind("click", function(){
 //(1)선택 상품 기준 배열생성 호출
 fnChkGoodsParam();
});

총 상품 판매가 총 할인 금액 총 배송비 프리미엄할인 회원할인 . .(생략)
반응형

[jQuery] each break/continue

2015. 1. 22. 15:56
반응형

jQuery each break/continue

$.each(giftInfo, function(i) {
    if(giftInfo[i].ORD_PSS_QTY <=0) { 	
        alert(J.getMessage("ord.warning.028", [giftInfo[i].PRD_NM])); 	
        //freeGift Stock check 	
        $(location).attr("href", "${refURL}"); 	
            flag = false; 	
            return false;  //break each loop 빠져나옴         
            return true;   //continue each loop 계속 수행									     
        } 
    }
);
반응형

[jQuery] loadingbar plugin

2014. 9. 19. 10:22
반응형
  • jquery.loadinbar.js
lodingbar plugin
  • sample.jsp

반응형

jquery ajax method 정리

2014. 3. 12. 09:53
반응형
$.ajax({
	type: 'POST',
	url: _url,
	cache: false,
	dataType: "json",
	data: _data,   
	processData: true,
	contentType: "application/json; charset=utf-8", 
	success: function(data, status){
	},
	error: function(request, status, error){
	}
});


 Name

 Value/Description

 파라메터는 한 개 이상의 name/value 쌍으로 표시

 async

 Boolean 값

 요청이 비동기식으로 처리되는지 여부를 나타냄 기본값은 true

 beforeSend(xhr)

 

 요청을 보내기 전에 실행되는 함수

 cache

 Boolean 값

 브라우저가 요청된 페이지를 캐싱해야 하는지 여부를 나타냄

 complete(xhr,status)  요청이 완료됐을 때 실행되는 함수
 contentType  서버로 보내지는 데이터의 content-type
기본값은 “application/x-www-form-urlencoded"
 dataFilter(data,type)  XMLHttpRequest의 응답 데이터를 처리할 때 사용되는 함수
 dataType  서버 응답으로 받는 데이터 타입
 error(xhr,status,error)  요청이 실패했을 때 실행되는 함수
 global Boolean 값 요청에 대해 전역 AJAX 이벤트를 실행할 지 여부를 명시함
 jsonp  jsonp 요청에서 callback 함수를 오버라이딩하는 문자열
 jsonpCallback  jsonp 요청에서 callback 함수 이름을 나타냄password
 password  HTTP 접근 인증(access authentication) 요청에 사용할 password를 나타냄
 processData Boolean 값 요청으로 보낸 데이터를 query string 형태로 변환할지 여부를 나타냄 기본값은 true
 scriptCharset  요청할 때의 charset을 나타냄
 success(result,status,xhr)  요청이 성공했을 때 수행되는 함수
 timeout  요청에 대해 로컬의 응답제한시간(timeout)을 밀리초로 나타냄
 traditional Boolean 값 파라미터 직렬화를 기존 방식으로 사용할 지 여부를 나타냄
 type  요청 type(GET 혹은 POST)을 명시함
 url  요청을 보낼 URL을 나타냄 기본값은 현재페이지
 xhr  XMLHttpRequest 오브젝트를 생성할 때 사용하는 함수


반응형
반응형

front-end에서 외부 도메인과 통신할 경우 javascript에서 JSONP를 이용하여 ajax통신이 가능하다.
아래 간단한 예제를 활용해 보자.

javascript

$.ajax({
    type : "GET",     
    dataType: "jsonp",     
    data: {id: "tttt"},     
    url: "http://www.test2.com/request",     
    success: function(data) {         
        $("#result").html(JSON.stringify(data));     
    },     
        error: function() {         
        alert("error");     
    } 
}); 

java request

@RequestMapping(value = "/request", method = RequestMethod.GET)     
public String request(@RequestParam String id, @RequestPrarm String callback) {         
    Map<string, string> paramMap = new HashMap<string, string>();         
    paramMap.put("id", id);         
    paramMap.put("result", "success");          

    String result = null;         
    ObjectMapper mapper = new ObjectMapper();         
    try {             
        result = mapper.writeValueAsString(paramMap);         
    } catch (JsonGenerationException e) {             
        e.printStackTrace();         
    } catch (JsonMappingException e) {             
        e.printStackTrace();         
    } catch (IOException e) {             
        e.printStackTrace();         
    }                  

    System.out.println(result);         
    return callback + "(" + result + ")";     
 }
반응형

'Programming > Frontend' 카테고리의 다른 글

jquery ajax method 정리  (0) 2014.03.12
jQuery multi redio button valid check  (0) 2014.02.13
jQuery에서 부모창 제어/접근(opener, parent)  (0) 2014.02.11
jquery hover 효과  (0) 2013.12.20
jQuery.noConflict() alias 사용  (0) 2013.03.24

+ Recent posts

반응형