1. 首先,搞本字典,在系統設置->字典管理里新增一部字典,並添加數據
前兩位是一級分類,再兩位是二級分類,最后三位是最后一級分類
2. 在需要下拉框的html文件內,找到下拉框對應標簽然后在<script>標簽中添加以下js代碼,用標簽后的內容替換#后面的字符串
1 var assetSortJson; 2 $.ajax({ 3 type:"POST", 4 url:"${ctx}/sys/dictData/treeData?dictType=asset_sort", 5 dataType:"json", 6 success: function(json){ 7 8 assetSortJson = json 9 10 // 當前選擇的class編號 11 var cla = $('#assetClassId option:selected').val(); 12 // 指向options所在標簽 13 var classSelect = $("#assetClassId")[0]; 14 // 清空所有selection,在for循環中重新導入相應的class 15 classSelect.options.length=1; 16 17 var sort = $('#assetSortId option:selected').val(); 18 var sortSelect = $("#assetSortId")[0]; 19 sortSelect.options.length=1; 20 21 22 var category = $('#categoryId option:selected').val(); 23 var categorySelect = $("#categoryId")[0]; 24 categorySelect.options.length=1; 25 26 for (var i of assetSortJson) { 27 if (i.value.length == 2) { 28 classSelect.options.add(new Option(i.name, i.value, false, i.value == cla)); 29 } else if (i.value.length == 4 && i.value.substr(0, 2) == cla) { 30 sortSelect.options.add(new Option(i.name, i.value, false, i.value == sort)); 31 } else if (i.value.length == 7 && i.value.substr(0, 4) == sort) { 32 categorySelect.options.add(new Option(i.name, i.value, false, i.value == category)); 33 } 34 } 35 } 36 });
這里的assetsort會從字典的路由中把整本字典以json格式取出來,之后別有他用。
我的分類有三級,分別取名class, sort, category。根據不同的長度,依次將不同級別的選項加入到xxxSelect中。
現在我們再次打開頁面,初始化后,選項已經不再是整本字典了,而是我們分類之后的結果。
3. 然后再次找到那幾個標簽,加上onchange=<方法名>,然后在<script>標簽中再次添加如下代碼
1 function getSort() { 2 var selectedClass = $('#assetClassId option:selected').val(); 3 4 var selectedSort = $('#assetSortId option:selected').val(); 5 var sortSelect = $("#assetSortId")[0]; 6 sortSelect.options.length=1; 7 8 var categorySelect = $("#categoryId")[0]; 9 categorySelect.options.length=1; 10 11 for (var i of assetSortJson) { 12 if (i.value.length == 4 && i.value.substr(0, 2) == selectedClass) { 13 sortSelect.options.add(new Option(i.name, i.value, false, i.value == selectedSort)); 14 } 15 } 16 } 17 18 function getCategory() { 19 var selectedSort = $('#assetSortId option:selected').val(); 20 21 var isSelected = $('#categoryId option:selected').val(); 22 var categorySelect = $("#categoryId")[0]; 23 categorySelect.options.length=1; 24 25 for (var i of assetSortJson) { 26 if (i.value.length == 7 && i.value.substr(0, 4) == selectedSort) { 27 categorySelect.options.add(new Option(i.name, i.value, false, i.value == isSelected)); 28 } 29 } 30 }
這里我們就要用到剛才取出的json,然后再根據該分類的長度,把選項重新放入。其實可以用filter的功能,多存幾個變量,這樣就不用每次掃整個json了。
4.
這里呢就是效果圖了,成了!