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

sel_supply_process 함수를 실행 문의 채택완료

감성콘텐츠 7년 전 조회 3,474

기존 추가옵션의 셀렉트박스를 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 = '&nbsp;&nbsp;[품절]';
            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개

채택된 답변
+20 포인트

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

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

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

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

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

답변에 대한 댓글 2개

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

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

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

테스트 url
http://artlife1661.maru.net/test/shop/item.php?it_id=1537363807
감성콘텐츠
7년 전
해결되었네요.
해결에 직접적인 답변은 아니었지만
간접적으로나마 도움이 되었습니다.
감사합니다.
즐거운 추선연휴 보내세요^^

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

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;
}

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

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

shop.js보니까

select.it_supply

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

@감성콘텐츠 님께서 따로 추가한게 안보이는데요!!!!

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

답변에 대한 댓글 1개

감성콘텐츠
7년 전
추가하건 없습니다.
위에 댓글 소스에서 볼드체로 표시한게 변경한것인데요.

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

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

로그인