sel_supply_process 함수를 실행 문의

sel_supply_process 함수를 실행 문의

QA

sel_supply_process 함수를 실행 문의

본문

기존 추가옵션의 셀렉트박스를 li 태그로 바꾸고자 몇가지 제이쿼리 소스를 변경하였습니다.

DB에서 정보를 가져와 순서대로 노출은 되지만 선택항목을 클릭하면

sel_supply_process 함수가 실행되지를 않는데요.

 

어떻게 하면 sel_supply_process 함수를 실행시킬 수 있을까요?

( 제이쿼리 초보이다 보니 몇주째 해메고 있네요. 고수님들의 한수 부탁드립니다.  )

 

js/shop.js  158번째 줄

$(document).on("click", ".it_supply li", function() {
  var $el = $(this);
  var val = $(this).val();
  
  if(val == "")
            return;
  
  if(supply_add)
            sel_supply_process($el, true);
    });

 

lib/shop.lib.php 1046번째 줄

// 상품 추가옵션
function get_item_supply($it_id, $subject, $is_div='')
{
    global $g5;

    if(!$it_id || !$subject)
        return '';

    $sql = " select * from {$g5['g5_shop_item_option_table']} where io_type = '1' and it_id = '$it_id' and io_use = '1' order by io_no asc ";
    $result = sql_query($sql);
    if(!sql_num_rows($result))
        return '';

    $str = '';

    $subj = explode(',', $subject);
    $subj_count = count($subj);
    $options = array();

    // 옵션항목 배열에 저장
    for($i=0; $row=sql_fetch_array($result); $i++) {
        $opt_id = explode(chr(30), $row['io_id']);

        if($opt_id[0] && !array_key_exists($opt_id[0], $options))
            $options[$opt_id[0]] = array();

        if(strlen($opt_id[1])) {
            if($row['io_price'] >= 0)
                $price = '  + '.number_format($row['io_price']).'원';
            else
                $price = '   '.number_format($row['io_price']).'원';
            $io_stock_qty = get_option_stock_qty($it_id, $row['io_id'], $row['io_type']);

            if($io_stock_qty < 1)
                $soldout = '  [품절]';
            else
                $soldout = '';

   $options[$opt_id[0]][] = '<li value="'.$opt_id[1].','.$row['io_price'].','.$io_stock_qty.','.$row['io_vr'].'">'.$opt_id[1].$price.$soldout.'</li>';
        }
    }

    // 옵션항목 만들기
    for($i=0; $i<$subj_count; $i++) {
        $opt = $options[$subj[$i]];
        $opt_count = count($opt);
        if($opt_count) {
            $seq = $i + 1;
            if($is_div === 'div') {
                $str .= '<div class="get_item_supply">'.PHP_EOL;
                $str .= '<label for="it_supply_'.$seq.'">'.$subj[$i].'</label>'.PHP_EOL;
            } else {
                $str .= '<tr>'.PHP_EOL;
                $str .= '<th><label for="it_supply_'.$seq.'">'.$subj[$i].'</label></th>'.PHP_EOL;
            }

            $select = '<ul id="it_supply_'.$seq.'" class="it_supply">'.PHP_EOL;
            $select .= '<li value="">선택</li>'.PHP_EOL;
            for($k=0; $k<$opt_count; $k++) {
                $opt_val = $opt[$k];
                if($opt_val) {
                    $select .= $opt_val.PHP_EOL;
                }
            }
            $select .= '</ul>'.PHP_EOL;
           
            if($is_div === 'div') {
                $str .= '<span class="td_sit_sel">'.$select.'</span>'.PHP_EOL;
                $str .= '</div>'.PHP_EOL;
            } else {
                $str .= '<td class="td_sit_sel">'.$select.'</td>'.PHP_EOL;
                $str .= '</tr>'.PHP_EOL;
            }
        }
    }

    return $str;
}

이 질문에 댓글 쓰기 :

답변 3

크롬 요소검사를 해보시면 어디서 오류가 뜨는지 대략 보입니다.

이부분을 이용하여 수정을 해가시고 

alert(), console.log() 이러한 함수들을 이용해서 직접 확인해 보시는게 빠릅니다.

그리고 이렇게 수정된 경우 url을 올려주셔야 테스트가 편하게 이루어 질 수 있을 듯합니다.

답변주셔서 감사합니다.
오류는 아닌것 같고 기존 셀렉트박스를 li 태그로 변경하는 과정에서
sel_supply_process 함수쪽에 변수값이 제대로 전달이 안되는것 같은데요.

기존 영카트 파일들에서 변경된 부분은 위에 질문에 올린 내용이
전부입니다.

만약 전달이 안된다면 어떻게 소스를 처리해야 할지 모르겠네요.
아래 테스트 url 올려드리니 sel_supply_process 함수가 실행되는것이
가능하시다면 확인좀 부탁드립니다.

테스트 url
http://artlife1661.maru.net/test/shop/item.php?it_id=1537363807

shop.js보니까

select.it_supply

요렇게 select 밑에서만 작동하게 되어있구요

님께서 따로 추가한게 안보이는데요!!!!

js/shop.js  158번째 줄

$(document).on("click", ".it_supply li", function() {
  var $el = $(this);
  var val = $(this).val();
  
  if(val == "")
            return;
  
  if(supply_add)
            sel_supply_process($el, true);
    });

 

lib/shop.lib.php 1046번째 줄

// 상품 추가옵션
function get_item_supply($it_id, $subject, $is_div='')
{
    global $g5;

    if(!$it_id || !$subject)
        return '';

    $sql = " select * from {$g5['g5_shop_item_option_table']} where io_type = '1' and it_id = '$it_id' and io_use = '1' order by io_no asc ";
    $result = sql_query($sql);
    if(!sql_num_rows($result))
        return '';

    $str = '';

    $subj = explode(',', $subject);
    $subj_count = count($subj);
    $options = array();

    // 옵션항목 배열에 저장
    for($i=0; $row=sql_fetch_array($result); $i++) {
        $opt_id = explode(chr(30), $row['io_id']);

        if($opt_id[0] && !array_key_exists($opt_id[0], $options))
            $options[$opt_id[0]] = array();

        if(strlen($opt_id[1])) {
            if($row['io_price'] >= 0)
                $price = '  + '.number_format($row['io_price']).'원';
            else
                $price = '   '.number_format($row['io_price']).'원';
            $io_stock_qty = get_option_stock_qty($it_id, $row['io_id'], $row['io_type']);

            if($io_stock_qty < 1)
                $soldout = '  [품절]';
            else
                $soldout = '';

   $options[$opt_id[0]][] = '<li value="'.$opt_id[1].','.$row['io_price'].','.$io_stock_qty.'">'.$opt_id[1].$price.$soldout.'</li>';
        }
    }

    // 옵션항목 만들기
    for($i=0; $i<$subj_count; $i++) {
        $opt = $options[$subj[$i]];
        $opt_count = count($opt);
        if($opt_count) {
            $seq = $i + 1;
            if($is_div === 'div') {
                $str .= '<div class="get_item_supply">'.PHP_EOL;
                $str .= '<label for="it_supply_'.$seq.'">'.$subj[$i].'</label>'.PHP_EOL;
            } else {
                $str .= '<tr>'.PHP_EOL;
                $str .= '<th><label for="it_supply_'.$seq.'">'.$subj[$i].'</label></th>'.PHP_EOL;
            }

            $select = '<ul id="it_supply_'.$seq.'" class="it_supply">'.PHP_EOL;
            $select .= '<li value="">선택</li>'.PHP_EOL;
            for($k=0; $k<$opt_count; $k++) {
                $opt_val = $opt[$k];
                if($opt_val) {
                    $select .= $opt_val.PHP_EOL;
                }
            }
            $select .= '</ul>'.PHP_EOL;
           
            if($is_div === 'div') {
                $str .= '<span class="td_sit_sel">'.$select.'</span>'.PHP_EOL;
                $str .= '</div>'.PHP_EOL;
            } else {
                $str .= '<td class="td_sit_sel">'.$select.'</td>'.PHP_EOL;
                $str .= '</tr>'.PHP_EOL;
            }
        }
    }

    return $str;
}

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

회원로그인

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