메뉴 건너뛰기

조회 수 8034 추천 수 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
번호 제목 날짜 조회 수
159 foreach문 2021.03.26 195
158 항상 최신버전으로 사용하기 2021.03.26 283
157 selectbox multiple 선택한 값들 submit 해서 받기 2021.03.26 1358
156 DateTimepicker ( Timepicker + Datepicker ) file 2021.03.26 787
155 라디오 버튼 선택값 가져오기 2021.03.26 229
154 간단한 스크롤 따라 움직이는 메뉴 만들기 2021.03.26 725
153 datepicker, onclick 이벤트시에 한번에 뜨게 하기 2021.03.26 1436
152 Cesium에서 canvas 화면 center 지점의 좌표 취득 2021.03.25 364
151 모달 띄우는 코드 2021.03.25 657
150 javascript, jQuery에서 루프 돌리기 예 (for, forEach, each) 2021.03.25 276
149 jQuery 사용자 정의 속성이 잘 반영되지 않은 경우 2021.03.25 157
148 최초 접속시 css와 script가 로딩되지 않을때 2021.03.25 322
147 ajax 동기화 처리하기 2021.03.25 416
146 CSS로 요소에 대한 클릭 등 이벤트 발생을 막고 싶을 때 2021.03.25 197
145 목록의 체크 선택/해제에 따라 [전체선택] 체크박스를 체크하거나 해제하기 2021.03.25 329
144 Ajax를 통해 전송된 데이터를 Controller에서 List 객체로 받기 2021.03.25 12222
143 radio 제어하기 2021.03.25 170
142 모든 링크를 읽어들여 기존의 태그 뒤에 새창열기 태그를 추가하기 예 2021.03.25 183
141 jQuery로 접속 주소(URL) 알아내기 2021.03.25 228
140 jquery 사용자정의 속성의 사용 2021.03.25 205
Board Pagination Prev 1 2 3 4 5 6 7 8 9 Next
/ 9

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved