jeesite级联下拉框

        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.

        

        这里呢就是效果图了,成了!

posted @ 2019-07-18 14:57  Bochao(Allen)  阅读(1475)  评论(0编辑  收藏  举报