• 三级联动,json数据、可设置默认城市


    闲来无事,折腾个三级联动,json数据、可设置默认城市、可配置是否显示第三级select

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>省市县三级联动</title>
        <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
        <script type="text/javascript">
        var cityjson = '{'
                +   '"province" : ['
                +      '{"id" : "1", "name" : "北京市"},'
                +      '{"id" : "2", "name" : "山西省"},'
                +      '{"id" : "3", "name" : "河北省"}'
                +   '],'
                +   '"city" : ['
                +      '{"cid" : "1", "id" : "1", "name":"海淀区"},'
                +      '{"cid" : "1", "id" : "2", "name":"西城区"},'
                +      '{"cid" : "1", "id" : "2", "name":"东城区"},'
                +      '{"cid" : "1", "id" : "3", "name":"朝阳区"},'
                +      '{"cid" : "2", "id" : "4", "name":"太原市"},'
                +      '{"cid" : "2", "id" : "5", "name":"大同市"},'
                +      '{"cid" : "2", "id" : "6", "name":"阳泉市"},'
                +      '{"cid" : "3", "id" : "7", "name":"石家庄"},'
                +      '{"cid" : "3", "id" : "8", "name":"蚌埠市"},'
                +      '{"cid" : "3", "id" : "9", "name":"张家口"}'
                +   '],'
                +   '"county" : ['
                +      '{"cid" : "1", "id" : "1", "name":"中关村"},'
                +      '{"cid" : "1", "id" : "2", "name":"五道口"},'
                +      '{"cid" : "2", "id" : "3", "name":"西直门"},'
                +      '{"cid" : "2", "id" : "4", "name":"新街口"},'
                +      '{"cid" : "2", "id" : "5", "name":"小西天"},'
                +      '{"cid" : "3", "id" : "6", "name":"东直门"},'
                +      '{"cid" : "3", "id" : "7", "name":"雍和宫"},'
                +      '{"cid" : "3", "id" : "8", "name":"北新桥"},'
                +      '{"cid" : "5", "id" : "9", "name":"城区"},'
                +      '{"cid" : "5", "id" : "10", "name":"南郊区"},'
                +      '{"cid" : "5", "id" : "11", "name":"开发区"}'
                +   ']'
                +'}';
        ;(function($, window, document, undefined){
            $.fn.showCity = function(opt){
                this.defaults = {
                    'cityjson'          : cityjson,     //json字符串变量名
                    'defaultShow'       : false,        //市、县是否显示,默认不显示
                    'showCounty'        : true,         //是否显示县
                    'defaultCity'       : [0,0,0]       //默认城市,对应id
                };
                this.options = $.extend({}, this.defaults, opt);
    
                var oCityJson = eval('('+this.options.cityjson+')'),
                    oProvince = $('.province',this),
                    oCity = $('.city',this),
                    oCounty = $('.county',this),
                    provinces = oCityJson.province,
                    citys = oCityJson.city,
                    countys = oCityJson.county;
    
                //创建省
                this.creatProvince = function(){
                    var html = '';
                    for(var i=0; i<provinces.length; i++){
                        html += '<option value='+provinces[i].id+'>'+provinces[i].name+'</option>';
                    }
                    oProvince.append(html);
                };
    
                this.creat = function(){
                    oProvince.html('<option value="0">选择省</option>');
                    this.creatProvince();
                    if(this.options.defaultShow){
                        oCity.show();
                        oCounty.show();
                        oCity.html('<option value="0">选择市</option>');
                        oCounty.html('<option value="0">选择县</option>');
                    };
                    this.defaultCity();
                    this.checkProvince();
                    if(this.options.showCounty){
                        this.checkCounty();
                    }
                };
    
                //默认城市
                this.defaultCity = function(){
                    if(this.options.defaultCity.toString() == '0,0,0'){
                        return;
                    };
    
                    var optionsCity = '';
                    for(var i=0; i<provinces.length; i++){
                        if(provinces[i].id == this.options.defaultCity[0]){
                            oProvince.val(provinces[i].id);
                            for(var j=0; j<citys.length; j++){
                                if(citys[j].cid == provinces[i].id){
                                    optionsCity += '<option value='+citys[j].id+'>'+citys[j].name+'</option>'
                                }
                            }
                            oCity.append(optionsCity).show();
                        }
                    };
    
                    var optionscounty = '';
                    for(var i=0; i<citys.length; i++){
                        if(citys[i].id == this.options.defaultCity[1] && citys[i].cid == oProvince.val()){
                            oCity.val(citys[i].id);
                            if(this.options.showCounty){
                                for(var j=0; j<countys.length; j++){
                                    if(countys[j].cid == citys[i].id){
                                        optionscounty += '<option value='+countys[j].id+'>'+countys[j].name+'</option>';
                                    }
                                }
                                oCounty.append(optionscounty).show();
                            }
                        }
                    };
    
                    if(this.options.showCounty){
                        for(var i=0; i<countys.length; i++){
                            if(countys[i].id == this.options.defaultCity[2] && countys[i].cid == oCity.val()){
                                oCounty.val(countys[i].id);
                            }
                        };
                    }
                }
    
    
                this.checkProvince = function(){
                    oProvince.bind('change',function(){
                        var html = '<option value="0">选择市</option>';
                        var val = $(this).val();
                        for(var i=0; i<citys.length; i++){
                            if(citys[i].cid == val){
                                html += '<option value='+citys[i].id+'>'+citys[i].name+'</option>'
                            }
                        }
                        oCity.html(html).show();
                        oCounty.html('<option value="0">选择县</option>');
                    })
                };
    
                this.checkCounty = function(){
                    oCity.bind('change',function(){
                        var html = '<option value="0">选择县</option>';
                        var val = $(this).val();
                        for(var i=0; i<countys.length; i++){
                            if(countys[i].cid == val){
                                html += '<option value='+countys[i].id+'>'+countys[i].name+'</option>'
                            }
                        }
                        oCounty.html(html).show();
                    })
                };
                
                return this.creat();
            }
        }(jQuery, window, document))
    
        $(function(){
            $('#selectItem').showCity({
                "defaultCity" : [2,5,10]
            });
        })
        </script>
    </head>
    <body>
    <div class="selectItem" id="selectItem">
        <select class="province"></select>
        <select class="city" style="display:none"></select>
        <select class="county" style="display:none"></select>
    </div>
    </body>
    </html>
  • 相关阅读:
    经典排序算法
    892. 三维形体的表面积
    252. 会议室
    253. 会议室 II
    876. 链表的中间结点
    543. 二叉树的直径
    836. 矩形重叠
    1055. 形成字符串的最短路径
    Android Studio Error: No sdk api is defined in local.properties
    Android Studio打开Android源码工程
  • 原文地址:https://www.cnblogs.com/laohuzi/p/4505730.html
Copyright © 2020-2023  润新知