메뉴 건너뛰기

조회 수 8042 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부


페이지를 만들다 보면 검색 조건에 카테고리를 선택해야 하는 경우가 생깁니다.


이러한 카테고리가 1depth 구조로 되어 있다면 DB에서 전체를 가져와 보여주면 됩니다.


하지만 일반적으로 1depth(메인) 밑에 2depth(서브) 가 있어서 메인 선택에 따라 서브 카테고리가 변경되야 합니다.


메인에 스포츠를 선택하면 서브에 야구, 농구, 축구 가 보여야 하고 공연을 선택한다면 서브에 연극, 뮤지컬, 오페라, 콘서트 등이 보여야 하는 구조입니다.


아래와 같이 말이죠.




<!DOCTYPE html>
<html lang="ko">
    <head>
        <Title>Category</Title> 
        <Meta Http-Equiv="Content-Type" Content="text/html; charset=utf-8">
        <script type="text/javascript" src="http://code.jquery.com/jquery.js"></script>
    </head>
 
    1depth: <select name="mainCategory" style="width:200px">
        <option value="">전체</option>
    </select>
    2depth: <select name="subCategory" style="width:200px">
        <option value="">전체</option>
    </select>
 
<script type="text/javascript">
 
$(document).ready(function() {
     
    //Main 카테고리를 선택 할때 마다 AJAX를 호출할 수 있지만 DB접속을 매번 해야 하기 때문에 main, sub카테고리 전체을 들고온다.
     
    //****************이부분은 DB로 셋팅하세요.
    //Main 카테고리 셋팅 (DB에서 값을 가져와 셋팅 하세요.)
    var mainCategoryArray = new Array();
    var mainCategoryObject = new Object();
     
    mainCategoryObject = new Object();
    mainCategoryObject.main_category_id = "1";
    mainCategoryObject.main_category_name = "스포츠";
    mainCategoryArray.push(mainCategoryObject);
     
    mainCategoryObject = new Object();
    mainCategoryObject.main_category_id = "2";
    mainCategoryObject.main_category_name = "공연";
    mainCategoryArray.push(mainCategoryObject);
     
    //Sub 카테고리 셋팅 (DB에서 값을 가져와 셋팅 하세요.)
    var subCategoryArray = new Array();
    var subCategoryObject = new Object();
     
    //스포츠에 해당하는 sub category 리스트
    subCategoryObject = new Object();
    subCategoryObject.main_category_id = "1";
    subCategoryObject.sub_category_id = "1"
    subCategoryObject.sub_category_name = "야구" 
    subCategoryArray.push(subCategoryObject);
     
    subCategoryObject = new Object();
    subCategoryObject.main_category_id = "1";
    subCategoryObject.sub_category_id = "2"
    subCategoryObject.sub_category_name = "농구" 
    subCategoryArray.push(subCategoryObject);
     
    subCategoryObject = new Object();
    subCategoryObject.main_category_id = "1";
    subCategoryObject.sub_category_id = "3"
    subCategoryObject.sub_category_name = "축구" 
    subCategoryArray.push(subCategoryObject);
     
    //공연에 해당하는 sub category 리스트
    subCategoryObject = new Object();
    subCategoryObject.main_category_id = "2";
    subCategoryObject.sub_category_id = "1"
    subCategoryObject.sub_category_name = "연극" 
    subCategoryArray.push(subCategoryObject);
     
    subCategoryObject = new Object();
    subCategoryObject.main_category_id = "2";
    subCategoryObject.sub_category_id = "2"
    subCategoryObject.sub_category_name = "뮤지컬"
    subCategoryArray.push(subCategoryObject);
     
    subCategoryObject = new Object();
    subCategoryObject.main_category_id = "2";
    subCategoryObject.sub_category_id = "3"
    subCategoryObject.sub_category_name = "오페라"
    subCategoryArray.push(subCategoryObject);
     
    subCategoryObject = new Object();
    subCategoryObject.main_category_id = "2";
    subCategoryObject.sub_category_id = "4"
    subCategoryObject.sub_category_name = "콘서트"
    subCategoryArray.push(subCategoryObject);
    //****************이부분은 DB로 셋팅하세요.
     
     
    //메인 카테고리 셋팅
    var mainCategorySelectBox = $("select[name='mainCategory']");
     
    for(var i=0;i<mainCategoryArray.length;i++){
        mainCategorySelectBox.append("<option value='"+mainCategoryArray[i].main_category_id+"'>"+mainCategoryArray[i].main_category_name+"</option>");
    }
     
    //*********** 1depth카테고리 선택 후 2depth 생성 START ***********
    $(document).on("change","select[name='mainCategory']",function(){
         
        //두번째 셀렉트 박스를 삭제 시킨다.
        var subCategorySelectBox = $("select[name='subCategory']");
        subCategorySelectBox.children().remove(); //기존 리스트 삭제
         
        //선택한 첫번째 박스의 값을 가져와 일치하는 값을 두번째 셀렉트 박스에 넣는다.
        $("option:selected", this).each(function(){
            var selectValue = $(this).val(); //main category 에서 선택한 값
            subCategorySelectBox.append("<option value=''>전체</option>");
            for(var i=0;i<subCategoryArray.length;i++){
                if(selectValue == subCategoryArray[i].main_category_id){
                     
                    subCategorySelectBox.append("<option value='"+subCategoryArray[i].sub_category_id+"'>"+subCategoryArray[i].sub_category_name+"</option>");
                     
                }
            }
        });
         
    });
    //*********** 1depth카테고리 선택 후 2depth 생성 END ***********
         
});
</script>


List of Articles
번호 제목 날짜 조회 수
99 [jQuery] split, join 으로 공백제거 하기 2018.09.06 2146
98 [jQuery] 셀렉트박스에서 특정 옵션 선택시 레이어 나타내기 2018.09.27 2553
97 따욤표 중복으로 출력하기 2018.09.28 1884
96 특정영역 제외하고 body 클릭 2018.09.28 3612
95 비활성화 된 라디오버튼 클릭 시 경고창 생성 2018.11.07 1396
94 getElementsByClassName 을 IE8 이하에서 동작하게 하는 코드 2018.11.07 1299
93 iframe height auto resize 2018.11.07 1403
92 3D Perspective Carousel with jQuery and CSS3 - CSSSlider 2018.11.07 1388
91 중복 없는 랜덤 2018.11.07 2017
90 터치 디바이스 분기처리 2018.11.07 1278
89 Magnific popup conflict with "jquery.nicescroll" file 2018.11.07 1315
88 Hide pager if bxslider has only 1 slide 2018.11.07 1296
87 jquery timer, javascript countdown (타이머 예제) 2018.11.07 81480
86 스크롤 최하단 자동 포커스(auto scroll to bottom of page with jquery) 2018.11.07 1571
85 jQuery 로 탭메뉴 2019.01.10 938
84 jQuery 로 탭메뉴 보였다 안보였다 맹글기 2019.01.10 1329
83 jQuery 로 원하는 갯수만큼 checkbox 선택하기 2019.01.10 1022
82 jQuery 로 해보는 체크박스(checkbox) 전체선택, 선택해제 예제 2019.01.10 1085
81 jQuery로 테이블 tr 동적으로 추가,삭제 하기 v2 2019.01.10 1211
80 jQuery를 이용한 스크롤 따라니는 배너를 쉽게 맨들기(scroll follow) file 2019.01.10 1093
Board Pagination Prev 1 2 3 4 5 6 7 8 9 Next
/ 9

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved