선택옵션 금액부분 변경

선택옵션 금액부분 변경

QA

선택옵션 금액부분 변경

본문

안녕하세요 저번에 같은 내용으로 질문드렸는데 도저히 해결이 되질 않아 다시 질문 드립니다..ㅠ

 

3731616218_1589951428.3543.png

js/shop.override.js 에서 위와같이 기존 영카트의 + 옵션가격이 아닌 옵션가격을 더한 상품의 가격 그대로가 노출이 되도록 변경해놓았습니다.

하지만 여기서 문제는 수량이 올라가도 빨간색 동그라미 부분은 변하질 않습니다.

수량 input의 값을 받아와서 * 를 해야되는것 같은데..

저한텐 소스가 너무 어렵네요 ... 도와주세요

 


jQuery(function($){
    $(".2017_renewal_itemform select.it_supply").on("shop_sel_supply_process", function(e, param){
        
        var add_exec = param.add_exec;
        var $el = $(this);
        var val = $el.val();
        
        //블랙캣77님이 해당 코드에 도움을 주셨습니다.
        var eq = $("select.it_supply").index($(this));
        var item = $el.closest(".sit_option").find("label").eq(eq).text();
        
        if(!val) {
            alert(item+"을(를) 선택해 주십시오.");
            return false;
        }
        var info = val.split(",");
        // 재고체크
        if(parseInt(info[2]) < 1) {
            alert(info[0]+"은(는) 재고가 부족하여 구매할 수 없습니다.");
            return false;
        }
        var id = item+chr(30)+info[0];
        var option = item+":"+info[0];
        var price = info[1];
        var stock = info[2];
        // 금액 음수 체크
        if(parseInt(price) < 0) {
            alert("구매금액이 음수인 상품은 구매할 수 없습니다.");
            return false;
        }
        if(add_exec) {
            if(same_option_check(option))
                return false;
            add_sel_option(1, id, option, price, stock);
        }
        return false;
    });
    if (typeof add_sel_option === "function") {
        add_sel_option = (function() {
            var cached_function = add_sel_option;
            return function() {
                
                if( $(".2017_renewal_itemform").length ){
                    var a = arguments;
                    var type=a[0],
                        id=a[1],
                        option=a[2],
                        price=a[3],
                        stock=a[4];
                    var item_code = $("input[name='it_id[]']").val();
                    var opt = "";
                    var li_class = "sit_opt_list";
                    if(type)
                        li_class = "sit_spl_list";
                    var it_price = parseInt($("input#it_price").val()); // 선택옵션 금액
                    var it_price_str=number_format(String(it_price))+"원"; //금액 정의
                    
                    price = parseInt(price);
                    it_price = parseInt(it_price);
                    var opt_prc;
                    if(parseInt(price) >= 0)
                        opt_prc = "+"+number_format(String(price + it_price))+"원";
                    
                    else
                        opt_prc = number_format(String(price))+"원";
                    opt += "<li class=\""+li_class+"\">";
                    opt += "<input type=\"hidden\" name=\"io_type["+item_code+"][]\" value=\""+type+"\">";
                    opt += "<input type=\"hidden\" name=\"io_id["+item_code+"][]\" value=\""+id+"\">";
                    opt += "<input type=\"hidden\" name=\"io_value["+item_code+"][]\" value=\""+option+"\">";
                    opt += "<input type=\"hidden\" class=\"io_price\" value=\""+price+"\">";
                    opt += "<input type=\"hidden\" class=\"io_stock\" value=\""+stock+"\">";
                    opt += "<div class=\"opt_name\">";
                    opt += "<span class=\"sit_opt_subj\">"+option+"</span>";
                    opt += "</div>";
                    opt += "<div class=\"opt_count\">";
                    opt += "<button type=\"button\" class=\"sit_qty_minus\"><i class=\"fa fa-minus\" aria-hidden=\"true\"></i><span class=\"sound_only\">감소</span></button>";
                    opt += "<input type=\"text\" name=\"ct_qty["+item_code+"][]\" value=\"1\" id=\"item_som\" class=\"num_input\" size=\"5\">";
                    opt += "<button type=\"button\" class=\"sit_qty_plus\"><i class=\"fa fa-plus\" aria-hidden=\"true\"></i><span class=\"sound_only\">증가</span></button>";
                    opt += "<span class=\"sit_opt_prc\">"+opt_prc+"</span>";
                    opt += "<button type=\"button\" class=\"sit_opt_del\"><i class=\"fa fa-times\" aria-hidden=\"true\"></i><span class=\"sound_only\">삭제</span></button></div>";
                    opt += "</li>";
                    if($("#sit_sel_option > ul").size() < 1) {
                        $("#sit_sel_option").html("<ul id=\"sit_opt_added\"></ul>");
                        $("#sit_sel_option > ul").html(opt);
                    } else{
                        if(type) {
                            if($("#sit_sel_option .sit_spl_list").size() > 0) {
                                $("#sit_sel_option .sit_spl_list:last").after(opt);
                            } else {
                                if($("#sit_sel_option .sit_opt_list").size() > 0) {
                                    $("#sit_sel_option .sit_opt_list:last").after(opt);
                                } else {
                                    $("#sit_sel_option > ul").html(opt);
                                }
                            }
                        } else {
                            if($("#sit_sel_option .sit_opt_list").size() > 0) {
                                $("#sit_sel_option .sit_opt_list:last").after(opt);
                            } else {
                                if($("#sit_sel_option .sit_spl_list").size() > 0) {
                                    $("#sit_sel_option .sit_spl_list:first").before(opt);
                                } else {
                                    $("#sit_sel_option > ul").html(opt);
                                }
                            }
                        }
                    }
                    price_calculate();
                    $("#sit_sel_option").trigger("add_sit_sel_option", [opt]);
                } else {
                    cached_function.apply(this, arguments); // use .apply() to call it
                }   //end if
            };
        }());
    }   //end if check function
    if (typeof price_calculate === "function") {
        price_calculate = (function() {
            var cached_function = price_calculate;
            return function() {
                
                if( $(".2017_renewal_itemform").length ){
                    var it_price = parseInt($("input#it_price").val());
                    var io_price = parseInt($("input#io_price").val());
                    if(isNaN(it_price))
                        return;
                    var $el_prc = $("input.io_price");
                    var $el_qty = $("input[name^=ct_qty]");
                    var $el_type = $("input[name^=io_type]");
                    var price, type, qty, total = 0;
                    $el_prc.each(function(index) {
                        price = parseInt($(this).val());
                        qty = parseInt($el_qty.eq(index).val());
                        type = $el_type.eq(index).val();
                        if(type == "0") { // 선택옵션
                            total += (it_price + price) * qty;
                        } else { // 추가옵션
                            total += price * qty;
                        }
                    });
                    
                    $("#sit_tot_price").empty().html("<span>총 금액 </span><strong>"+number_format(String(total))+"</strong> 원");
                    $("#sit_tot_price").trigger("price_calculate", [total]);
                } else {
                    cached_function.apply(this, arguments); // use .apply() to call it
                }
                
            };
        }());
    }   //end if check function
});

 

$(".sit_opt_prc").empty().html(number_format(String(total))+" 원");  이렇게 넣으면

옵션이 한가지 일때는 문제가없지만 옵션을 두개 이상선택하면 아래와 같이 나옵니다..

 

3731616218_1589951597.721.png

 

이 질문에 댓글 쓰기 :

답변 1

input type hidden 하나 추가 하신 후 변경되는 금액을 저곳에 기입. 

단 number_format 제외 하고 그냥 숫자만 넣고..변경될때마다 그 값을 변경 해주시고 불러올때 현재 값을 불러내버리시는 방법이 하나 있습니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 68
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT