2017-05-23 1 views
0

상당히 고급 계층 구조의 드롭 다운 옵션을 만들려고합니다. 내가 선택한 이전 옵션과 관련이없는 옵션이 숨겨 지도록하려고합니다. 예를 들어 장치 그룹이 선택되면 두 번째 드롭 다운은 기본적으로 중간 드롭 다운의 "그룹 세부 사항"이되며 사용되지 않으므로 맨 아래 드롭 다운이 사라집니다. 그런 다음 기기 설정 (상단 드롭 다운)으로 다시 전환하면 중간 드롭 다운이 기본적으로 기기 세부 정보 (중간 드롭 다운)로 표시되고 하단 드롭 다운이 다시 표시되며 기기 및 알림이 아닌 옵션과 관련된 옵션 만 표시됩니다.jQuery를 사용하여 계층 구조 목록 선택

/* global $ */ 
 
$(document).ready(function(){ 
 
    $("#top").change(function() { 
 
     var value = $(this).val(); 
 
     $("#middle").prop("disabled", false); 
 
     $("#middle > option").hide(); 
 
     $("#middle > option[value*='" + value +"']").show(); 
 
     $("#bottom").prop("disabled", false); 
 
     $("#bottom > option").hide(); 
 
     $("#bottom > option[value*='" + value +"']").show(); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <select id="top" class="top"> 
 
     <option value="Settings">Device Settings</option> 
 
     <option value="Groups">Device Groups</option> 
 
    </select> 
 

 
    <br /><br /> 
 

 
    <select id="middle" class="middle"> 
 
     <option value="Settings--Details">Device Details</option> 
 
     <option value="Settings--Notification">Notification List</option> 
 
     <option value="Settings--Digital">Digital Inputs</option> 
 
     <option value="Settings--Analog">Analog Inputs</option> 
 
     <option value="Settings--DigitalO">Digital Outputs</option> 
 
     <option value="Settings--Geofencing">Geofencing</option> 
 
     <option value="Settings--Application">Application Specific</option> 
 
     <option value="Groups--GroupDe">Group Details</option> 
 
    </select> 
 

 
    <br /><br /> 
 

 
    <select id="bottom" class="bottom"> 
 
     <option value="Settings--Details--BasicInfo">Basic Info</option> 
 
     <option value="Settings--Details--SiteDetails">Site Details</option> 
 
     <option value="Settings--Notification--Add">Add or Edit</option> 
 
     <option value="Settings--Notification--Import">Import Notification List</option> 
 
     <option value="Settings--Digital--Displayed">Show Displayed Only</option> 
 
     <option value="Settings--Digital--All">Show All</option> 
 
    </select> 
 
</div>

+0

3 드롭 다운 옵션은 2 드롭 다운의 값을 기준으로 표시됩니다. 맞아 ? –

+0

세 번째 드롭 다운은 첫 번째 드롭 다운을 기반으로 표시/숨길 것입니다. 어느 것이 아래에 응답됩니다. –

답변

2

이 변경 기능이 끝나기 전에이 추가

여기 내 코드입니다,

#top의 값이 "때이 #bottom 선택 박스를 숨길
if (value == "Groups") { 
    $("#bottom").hide(); 
} else { $("#bottom").show(); } 

그룹 "을 선택하고 다른 옵션을 선택하면 다시 표시하십시오.

편집 : #middle 값을 기준으로보기 #bottom 옵션은

$("#middle").change(function() { 
    var middle = $(this).val(); 
    $("#bottom > option").hide(); 
    $("#bottom > option[value*='" + middle +"']").show(); 
}); 
+0

감사합니다. 그러나 두 번째 드롭 다운에서 선택한 값을 기반으로 세 번째 드롭 다운에서 값을 숨기는 것은 어떻습니까? 두 번째 드롭 다운이 '기기 세부 정보'에있는 경우 세 번째 드롭 다운에는 '기본 정보'와 '사이트 세부 정보'만 표시됩니다. 그런 다음 두 번째 드롭 다운을 '알림 목록'으로 변경하면 세 번째 드롭 다운에 '추가 또는 수정'및 '알림 목록 가져 오기'만 있습니다. –

+0

변경 기능 중간에서이 작업을 수행해야합니다. 필요한 코드로 내 대답을 편집했습니다. –

+0

감사합니다! 그게 효과가 있었어! –