메뉴 건너뛰기

조회 수 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
번호 제목 날짜 조회 수
159 기본 동작 막기 2021.03.25 284
158 항상 최신버전으로 사용하기 2021.03.26 284
157 fadeIn() , fadeOut() 을 이용한 간단한 자동 그림 전환 2021.03.26 285
156 jQuery - 드래그앤드롭(DragAndDrop)을 통한 파일 업로드 file 2021.03.09 291
155 click에 따른 마우스 휠 on off 2021.03.31 303
154 다중 select 2021.03.31 316
153 최초 접속시 css와 script가 로딩되지 않을때 2021.03.25 322
152 목록의 체크 선택/해제에 따라 [전체선택] 체크박스를 체크하거나 해제하기 2021.03.25 329
151 jQuery - 드래그, 리사이즈 이벤트에 따른 영역 침범 막기 file 2021.03.09 363
150 Cesium에서 canvas 화면 center 지점의 좌표 취득 2021.03.25 370
149 ajax 동기화 처리하기 2021.03.25 416
148 jQuery - radio, checkBox값 가져오기, 선택하기, 제어 등 file 2021.03.09 543
147 SELECTBOX MULTIPLE 검색하기 2021.03.26 568
146 jQuery - 클릭이벤트 동적 처리하기($("").click(), on('click') 차이) file 2021.03.09 580
145 jQuery - ajax xhr을 활용한 파일 업로드 진행 상태 확인하기 file 2021.03.09 586
144 간단한 마우스 포인터 따라 다니기 2021.03.26 594
143 jQuery - checkbox 전체 선택, 해제 기능 및 단일 체크박스가 해제되었을때 전체 선택 해제 하기 file 2021.03.09 613
142 모달 띄우는 코드 2021.03.25 657
141 JS 첵박스 샘플 2019.06.04 694
140 사업자 번호를 입력하면 자동으로 하이픈을 붙여줍니다. 2020.08.24 704
Board Pagination Prev 1 2 3 4 5 6 7 8 9 Next
/ 9

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved