jquery each
-
장바구니 주문금액 재계산 스크립트2015.04.06
-
[jQuery] multi element each2015.03.31
-
[jQuery] each break/continue2015.01.22
-
jQuery multi redio button valid check2014.02.13
장바구니 주문금액 재계산 스크립트
2015. 4. 6. 16:14
반응형
//선택한 주문상품 배열 생성 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(); });총 상품 판매가 원 총 할인 금액 원 총 배송비 원 프리미엄할인 원 회원할인 원 . .(생략)
반응형
'Programming > Frontend' 카테고리의 다른 글
[jQuery] multi element each (0) | 2015.03.31 |
---|---|
웹 사이트 성능 최적화 분석 자동화: YSlow와 CI 서버 연동 (0) | 2015.01.22 |
[jQuery] each break/continue (0) | 2015.01.22 |
[jQuery] loadingbar plugin (0) | 2014.09.19 |
jquery ajax method 정리 (0) | 2014.03.12 |
[jQuery] multi element each
2015. 3. 31. 15:23
반응형
다중 each index, value 출력
var fnLoadSetGoodLayer = function(paramJson){
$.each($("#"+paramJson.goods_no).find("[id='set_goods_nm']"), function(i, goods_nm){
$.each($("#"+paramJson.goods_no).find("[id='set_cmps_qty']"), function(j, cmps_qty){
if(i == j){
console.log($(goods_nm).val() + " " + $(cmps_qty).val());
};
});
});
}
반응형
'Programming > Frontend' 카테고리의 다른 글
장바구니 주문금액 재계산 스크립트 (0) | 2015.04.06 |
---|---|
웹 사이트 성능 최적화 분석 자동화: YSlow와 CI 서버 연동 (0) | 2015.01.22 |
[jQuery] each break/continue (0) | 2015.01.22 |
[jQuery] loadingbar plugin (0) | 2014.09.19 |
jquery ajax method 정리 (0) | 2014.03.12 |
[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 계속 수행
}
}
);
반응형
'Programming > Frontend' 카테고리의 다른 글
[jQuery] multi element each (0) | 2015.03.31 |
---|---|
웹 사이트 성능 최적화 분석 자동화: YSlow와 CI 서버 연동 (0) | 2015.01.22 |
[jQuery] loadingbar plugin (0) | 2014.09.19 |
jquery ajax method 정리 (0) | 2014.03.12 |
jQuery multi redio button valid check (0) | 2014.02.13 |
jQuery multi redio button valid check
2014. 2. 13. 11:01
반응형
개발을 하다보면 multi radio button에 대한 유효성 검증 로직을 사용할 경우가 있다.
특히 설문지 형태에 동적인 페이지에 대하여 선택값 검증을 할 경우가 종종 있던거 같아 작성해 본다.
jQuery each를 이용하여 3번에 for문이 돌아간다.
1 - Question 문항
2 - Question 문항 안에 소단위 문항
3 - radio button 목록
-Evaluation.aspx
<script> $J(function() { document.location.href = '#show'; $J('input:radio').addClass("vm"); var chkVal; //등록 $J("#btnReg").click(function() { var chkLen = 0; var chkLen2 = 0; $J("[id='tableExample']").each(function(i) { chkVal = "N"; chkLen2 = 0; $J(this).find("#trExample").each(function(j) { chkVal = "N"; $J(this).find("input:radio").each(function() { if ($J(this).is(":checked") == true) { chkVal = "V"; } }); if (chkVal != "V") { alert((i + 1) + "번 문항의 " + (j + 1) + "번째 직원의 답변을 선택해주세요"); $J(this).find("input:radio")[0].focus(); return false; } else if (chkVal == "V") { chkLen2++; } }); if ($J(this).find("#trExample").length == chkLen2) { chkLen++; } else { return false; } }); }); }); </script>html 영역
Question No를 기준으로 for문이 돌고, 중첩으로 소문항 단위로 for문이 호출되는 구조
-Question.aspx
<asp:Repeater ID="rptQuestionList" runat="server" OnItemDataBound="rptQuestionList_OnItemDataBound"> <table id="tableExample"> <asp:Repeater ID="rptAnswerList" runat="server" OnItemDataBound="rptAnswerList_OnItemDataBound"> <tr id="trExample"> <input type="radio" class="vm" id="rdoExample1"> <input type="radio" class="vm" id="rdoExample2"> <input type="radio" class="vm" id="rdoExample3"> </tr> </asp:Repeater> </table> </asp:Repeater>
반응형
'Programming > Frontend' 카테고리의 다른 글
[jQuery] loadingbar plugin (0) | 2014.09.19 |
---|---|
jquery ajax method 정리 (0) | 2014.03.12 |
[ajax] JSONP CROSS SITE 응답 받기 (0) | 2014.02.12 |
jQuery에서 부모창 제어/접근(opener, parent) (0) | 2014.02.11 |
jquery hover 효과 (0) | 2013.12.20 |