sit_opt_list .size()관련 질문드립니다.

sit_opt_list .size()관련 질문드립니다.

QA

sit_opt_list .size()관련 질문드립니다.

본문

현재 개발단계의 홈페이지가 get을 통해 데이터가 들어오면 자동으로 옵션이 설정되도록 작업중입니다.

 

기존 개발자분이 영카트, 그누보드로 개발을 하시고 저는 인수인계만 받아 잘 모르겠어서 질문을 드립니다..

 

get을 통해 데이터를 받으면 option 함수 selected를 통해 선택이 자동으로 되게 만들었습니다.

그러나 구매하기 버튼을 누르면 

 

    if($(".sit_opt_list").size() < 1) {

        alert("상품의 선택옵션을 선택해 주십시오.");

        return false;

    }

자바스크립트가 활성화 되어 return이 되어버리는데요... 마냥 또 저 함수를 지워버릴수 없는게 get에 데이터가 없으면 활성화가 되야 하여 지우지도 못하고 있는 상황입니다.

 

혹시 selected 작업을 처리할때 sit_opt_list의 size를 키워줄수 있는 방법이 있을까요? 

 

ps. 사이즈만 키운다면 아마 금액 정산할때 정상적으로 처리가 안될거 같은데 방법이 따로 없을까요 ..

스크립트로 옵션에 vlaue를 주는 작업도 해봤습니다. 정상적으로 작성을 안한건지 작동을 하지 않았습니다 ...

이 질문에 댓글 쓰기 :

답변 1

$(".sit_opt_list").length 는 선택된 옵션 수입니다

마지막 선택옵션 셀렉트박스가 change 되었을 때

dom을 추가하고 그 추가된 dom에 실제 처리할 input hidden 값이 있습니다

그래서 get으로 옵션을 주고 

선택옵션 select 를 change trigger 해줘야 

선택된 옵션이 나타날 것 같은데요

 

3696253845_1615173730.2078.png

 

 

답변 감사합니다.

php에서 get을 통해 옵션을 설정하고 jquery로
 echo '<script>
                            $("select").change(function(){
                                var str = "";
                                $("select option:selected").each(function(){
                                    str += $(this).text() + " ";
                                });
                       
                                $("div").text(str);
                            }).change();
                            </script>';
와 같은 코드를 작성했습니다. 여전히 옵션이 선택이 안되어있다고 나오는데 혹시 다른 방법이 있을까요?

제가 첨부한 이미지 중에 빨간 박스가 나오게 하는게 목표입니다.
실제 추가된 옵션 dom append JS 함수는
https://github.com/gnuboard/youngcart5/blob/5.4.5.1/js/shop.js#L381
이고요

해결해야할 문제가 몇 가지 있습니다
1. 선택옵션 select change 시 하위 옵션을 ajax 가져와서 뿌려줍니다
이게 비동기라 순서를 보장할 수 없다는 점
2번째 옵션 셀렉트를 change 트리거 하기전에
select option 이 들어와 있어야 합니다.

2. 마지막 옵션이 선택되었을 때
상기 빨간 박스의 선택된 옵션을 뿌려야하는데
그게 영카트 js 상 변수가 하나 잡혀있는데요
https://github.com/gnuboard/youngcart5/blob/5.4.5.1/js/shop.js#L105
코드의 option_add 변수입니다. (true 일 때만 작동)
jQuery.trigger() 가 멀티 이벤트가 작동하지 않으므로
.trigger('mouseup').trigger('change') 이런식으로 하시던지
jquery trigger multiple 같은 키워드로 검색하셔서 따로 구현을 하시던지 하셔야하구요

3. 마지막 선택옵션의 select option value 가
옵션값 뿐만아니라 재고 수량도 쉼표로 붙어있는 점도 고려하셔야 하고요

제가 대충 테스트해보면
/shop/item.php?it_id=1490690324&opt1=XXL&opt2=빨,0,9999
<script>
var opt1 = "<?php echo isset($_GET['opt1']) ? $_GET['opt1'] : ''; ?>";
var opt2 = "<?php echo isset($_GET['opt2']) ? $_GET['opt2'] : ''; ?>";
var opt3 = "<?php echo isset($_GET['opt3']) ? $_GET['opt3'] : ''; ?>";
$(function() {
    if (opt1) {
        $('#it_option_1').val(opt1).trigger('mouseup').trigger('change');
    }
    if (opt2) {
        setTimeout(function() {
            $('#it_option_2').val(opt2).trigger('mouseup').trigger('change');
        },1000);
    }
});
</script>

아이디어만 드려봤어요.
따라하진 마시고요....!

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

회원로그인

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