테스트 사이트 - 개발 중인 베타 버전입니다

메인 상품 리스트에 장바구니 버튼만들었을때 질문입니다. 채택완료

copo 7년 전 조회 2,798

테마의 redshop의 메인 신상품 리스트에 장바구니와 위시리스트 버튼을 넣었습니다.

그런데 위시리스트 버튼은 잘 작동하는데요 장바구니 버튼은 아무런 반응이 없어서 그럽니다.

어디를 보아야 하나요?

 

theme/redshop/skin/shop/basic/main.10.skin.php

 

</strong></p>

<p>echo"<div class=\"sct_btn\">

            <div class=\"sct_cart_btn\">

                <button type=\"button\" class=\"btn_cart\" data-it_id=\"{$row['it_id']}\"><span class=\"btn_txt\">장바구니</span>
<i class=\"fa fa-shopping-cart\" aria-hidden=\"true\"></i></button>

                <button type=\"button\" class=\"btn_wish\" data-it_id=\"{$row['it_id']}\"><span class=\"btn_txt\">위시리스트</span>
<i class=\"fa fa-heart\" aria-hidden=\"true\"></i></button>

            </div>

        </div>\n";</p>

<p> <strong>

 

 

theme/redshop/js/jquery.shop.list.js

 

</strong></p>

<p>$(function () {

    $(document).on("click", ".btn_cart", function() {

        var it_id = $(this).data("it_id");

        var $opt = $(this).closest("li.sct_li").find(".sct_cartop");

        var $btn = $(this).closest("li.sct_li").find(".sct_btn");</p>

<p>        $(".sct_cartop").not($opt).css("display", "");</p>

<p>        $.ajax({

            url: g5_theme_shop_url+"/ajax.itemoption.php",

            type: "POST",

            data: {

                "it_id" : it_id

            },

            dataType: "json",

            async: true,

            cache: false,

            success: function(data, textStatus) {

                if(data.error != "") {

                    alert(data.error);

                    return false;

                }</p>

<p>                $opt.html(data.html);</p>

<p>                if(!data.option) {

                    add_cart($opt.find("form").get(0));

                    return;

                }</p>

<p>                $btn.css("display","none");

                $opt.css("display","block");

            }

        });

    });</p>

<p>    $(document).on("change", "select.it_option", function() {

        var $frm = $(this).closest("form");

        var $sel = $frm.find("select.it_option");

        var sel_count = $sel.size();

        var idx = $sel.index($(this));

        var val = $(this).val();

        var it_id = $frm.find("input[name='it_id[]']").val();</p>

<p>        // 선택값이 없을 경우 하위 옵션은 disabled

        if(val == "") {

            $frm.find("select.it_option:gt("+idx+")").val("").attr("disabled", true);

            return;

        }</p>

<p>        // 하위선택옵션로드

        if(sel_count > 1 && (idx + 1) < sel_count) {

            var opt_id = "";</p>

<p>            // 상위 옵션의 값을 읽어 옵션id 만듬

            if(idx > 0) {

                $frm.find("select.it_option:lt("+idx+")").each(function() {

                    if(!opt_id)

                        opt_id = $(this).val();

                    else

                        opt_id += chr(30)+$(this).val();

                });</p>

<p>                opt_id += chr(30)+val;

            } else if(idx == 0) {

                opt_id = val;

            }</p>

<p>            $.post(

                g5_shop_url + "/itemoption.php",

                { it_id: it_id, opt_id: opt_id, idx: idx, sel_count: sel_count },

                function(data) {

                    $sel.eq(idx+1).empty().html(data).attr("disabled", false);</p>

<p>                    // select의 옵션이 변경됐을 경우 하위 옵션 disabled

                    if(idx+1 < sel_count) {

                        var idx2 = idx + 1;

                        $frm.find("select.it_option:gt("+idx2+")").val("").attr("disabled", true);

                    }

                }

            );

        } else if((idx + 1) == sel_count) { // 선택옵션처리

            if(val == "")

                return;</p>

<p>            var info = val.split(",");

            // 재고체크

            if(parseInt(info[2]) < 1) {

                alert("선택하신 선택옵션상품은 재고가 부족하여 구매할 수 없습니다.");

                return false;

            }

        }

    });</p>

<p>    $(document).on("click", ".cartopt_cart_btn", function() {

        add_cart(this.form);

    });</p>

<p>    $(document).on("click", ".cartopt_close_btn", function() {

        $(this).closest(".sct_cartop").css("display","none");

        $(this).closest("li.sct_li").find(".sct_btn").css("display", "");

    });</p>

<p>    $(document).on("click", ".btn_wish", function() {

        add_wishitem(this);

    });

});</p>

<p>function add_wishitem(el)

{

    var $el   = $(el);

    var it_id = $el.data("it_id");</p>

<p>    if(!it_id) {

        alert("상품코드가 올바르지 않습니다.");

        return false;

    }</p>

<p>    $.post(

        g5_theme_shop_url + "/ajax.wishupdate.php",

        { it_id: it_id },

        function(error) {

            if(error != "OK") {

                alert(error.replace(/\\n/g, "\n"));

                return false;

            }</p>

<p>            alert("상품을 위시리스트에 담았습니다.");

            return;

        }

    );

}</p>

<p>function add_cart(frm)

{

    var $frm = $(frm);

    var $sel = $frm.find("select.it_option");

    var it_name = $frm.find("input[name^=it_name]").val();

    var it_price = parseInt($frm.find("input[name^=it_price]").val());

    var id = "";

    var value, info, sel_opt, item, price, stock, run_error = false;

    var option = sep = "";

    var count = $sel.size();</p>

<p>    if(count > 0) {

        $sel.each(function(index) {

            value = $(this).val();

            item  = $(this).prev("label").text();</p>

<p>            if(!value) {

                run_error = true;

                return false;

            }</p>

<p>            // 옵션선택정보

            sel_opt = value.split(",")[0];</p>

<p>            if(id == "") {

                id = sel_opt;

            } else {

                id += chr(30)+sel_opt;

                sep = " / ";

            }</p>

<p>            option += sep + item + ":" + sel_opt;

        });</p>

<p>        if(run_error) {

            alert(it_name+"의 "+item+"을(를) 선택해 주십시오.");

            return false;

        }</p>

<p>        price = value[1];

        stock = value[2];

    } else {

        price = 0;

        stock = $frm.find("input[name^=it_stock]").val();

        option = it_name;

    }</p>

<p>    // 금액 음수 체크

    if(it_price + parseInt(price) < 0) {

        alert("구매금액이 음수인 상품은 구매할 수 없습니다.");

        return false;

    }</p>

<p>    // 옵션 선택정보 적용

    $frm.find("input[name^=io_id]").val(id);

    $frm.find("input[name^=io_value]").val(option);

    $frm.find("input[name^=io_price]").val(price);</p>

<p>    $.ajax({

        url: frm.action,

        type: "POST",

        data: $(frm).serialize(),

        dataType: "json",

        async: true,

        cache: false,

        success: function(data, textStatus) {

            if(data.error != "") {

                alert(data.error);

                return false;

            }</p>

<p>            alert("상품을 장바구니에 담았습니다.");

        }

    });</p>

<p>    return false;

}</p>

<p>// php chr() 대응

if(typeof chr == "undefined") {

    function chr(code)

    {

        return String.fromCharCode(code);

    }

}</p>

<p> <strong>

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
플라이
7년 전

스크립트에서 반응하는 부분을 체크하면서 확인해 보셔야 할듯 합니다.

제대로 스크립트가 반응하고 있는지 alert 부분을 찍어 보면서 확인해 보세요

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인