zoukankan      html  css  js  c++  java
  • 前端实现行业分类四级联动选择表单

    实现效果:



    部分数据结构:


    主要页面代码:

     1     <form id="form">
     2         <div id="select-class" name="typeClass">
     3             <select name="main_business_type_0"  id="class-0">
     4                 <option>请选择门类</option>
     5             </select>
     6             /
     7             <select name="main_business_type_1" id="class-1">
     8                 <option>请选择大类</option>
     9             </select>
    10             /
    11             <select name="main_business_type_2" id="class-2">
    12                 <option>请选择中类</option>
    13             </select>
    14             /
    15             <select name="main_business_type_3" id="class-3">
    16                 <option>请选择小类</option>
    17             </select>
    18         </div>
    19     </form>

    js代码:

            $("#select-class").each(function(){
                var temp_html ;
                var oClass_0 = $(this).find("#class-0")//门类
                var oClass_1 = $(this).find("#class-1")//大类
                var oClass_2 = $(this).find("#class-2")//中类
                var oClass_3 = $(this).find("#class-3")//小类
                var class_0_key_array = [] ;//门类键名组成的数组
                var class_1_key_array = [] ;//大类键名组成的数组
                var class_2_key_array = [] ;//中类键名组成的数组
                var class_0_selected_index = 0 ;
                var class_1_selected_index = 0 ;
                var class_2_selected_index = 0
                //初始化门类
                var class_0_init = function(){
                    class_0_key_array = [] ;//初始化门类键名组成的数组
                    $.each(classJson , function(key,value){
                        class_0_key_array.push(key) ;
                        temp_html += "<option value='"+value.trade_name+"'>"+value.trade_name+"</option>";
                    });
                    //渲染门类
                    oClass_0.html(temp_html);
                    //渲染完成后清空temp_html
                    temp_html = "";
                    //当门类被选择并初始化后,初始化大类
                    class_1_init(class_0_key_array) ;
                };
                //初始化大类
                var class_1_init = function(class_0_key_array){
                    //初始化大类键名组成的数组
                    class_1_key_array = [] ;                
                    //判断由上级往下传的key_array长度是否为0
                    if (class_0_key_array.length != 0) {
                        //若key_array长度为0,则说明无需渲染此节点及更深节点,直接往下传空array
                        //若key_array长度不为0,则继续渲染
                        class_0_selected_index = oClass_0.get(0).selectedIndex;//选了第几个
                        $.each(classJson[class_0_key_array[class_0_selected_index]].children , function(key,value){
                            class_1_key_array.push(key) ;
                            temp_html += "<option value='"+value.trade_name+"'>"+value.trade_name+"</option>";
                        });
                    }
                    //渲染大类
                    oClass_1.html(temp_html) ;
                    //渲染完成后清空temp_html
                    temp_html = "";
                    //当大类被选择并初始化后,初始化中类
                    class_2_init(class_1_key_array) ;
                };
                //初始化中类
                var class_2_init = function (class_1_key_array){
                    //初始化中类键名组成的数组
                    class_2_key_array = [] ;
                    //判断由上级往下传的key_array长度是否为0
                    if (class_1_key_array.length != 0) {
                        //若key_array长度为0,则说明无需渲染此节点及更深节点,直接往下传空array
                        //若key_array长度不为0,则继续渲染
                        class_1_selected_index = oClass_1.get(0).selectedIndex ;//选择了第几个
                        $.each(classJson[class_0_key_array[class_0_selected_index]].children[class_1_key_array[class_1_selected_index]].children , function(key,value){
                            class_2_key_array.push(key) ;
                            temp_html += "<option value='"+value.trade_name+"'>"+value.trade_name+"</option>";
                        });
                    }
                    //渲染中类
                    oClass_2.html(temp_html);
                    //渲染完成后清空temp_html
                    temp_html = "";
                    //当中类被选择并初始化后,初始化小类
                    class_3_init(class_2_key_array) ;
    
                };
                //初始化小类
                var class_3_init = function(class_2_key_array){
                    //初始化小类键名组成的数组
                    class_3_key_array = [] ;
                    //判断由上级往下传的key_array长度是否为0
                    if (class_2_key_array.length != 0) {
                        //若key_array长度为0,则说明无需渲染此节点及更深节点,直接往下传空array
                        //若key_array长度不为0,则继续渲染
                        //捕获选中的中类位置
                        class_2_selected_index = oClass_2.get(0).selectedIndex ;
                        $.each(classJson[class_0_key_array[class_0_selected_index]].children[class_1_key_array[class_1_selected_index]].children[class_2_key_array[class_2_selected_index]].children , function(key , value){
                            class_3_key_array.push(key) ;
                            temp_html += "<option value='"+value.trade_name+"'>"+value.trade_name+"</option>";                    
                        });
                    }
                    //渲染小类
                    oClass_3.html(temp_html);
                    //渲染完成后清空temp_html
                    temp_html = "" ;
                    //遍历完成,end
    
                }
                //改变门类的时候联动大类
                oClass_0.change(function(){
                    class_1_init(class_0_key_array);
                });
                //改动大类的时候联动中类
                oClass_1.change(function(){
                    class_2_init(class_1_key_array);
                });
                //改变中类的时候联动小类
                oClass_2.change(function(){
                    class_3_init(class_2_key_array);
                })
                class_0_init();
            });
  • 相关阅读:
    C语言I博客作业09
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    C语言II博客作业04
    C语言II博客作业03
    C语言II博客作业02
    C语言|博客作业01
    学期总结
  • 原文地址:https://www.cnblogs.com/maoguy/p/7774445.html
Copyright © 2011-2022 走看看