美文网首页
基于mui省市区数据自封插件

基于mui省市区数据自封插件

作者: 我的小可爱卓 | 来源:发表于2018-08-28 11:39 被阅读0次

    废话不多说直接上代码

    <!DOCTYPE html>
    <html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" type="text/css" href="bootstrap/css/bootstrap.css" />
        <script src="js/jquery-1.12.4.min.js"></script>
        <script src="js/citydata3.js"></script>  mui官网自己下数据
        <script src="js/xyjCity.js"></script>
    </head>
    
    <body>
        <div class="main"></div>
        <div class="main1"></div>
        <script>
            $.city({
                ele: ".main", /*页面要追加的位置*/
                id: "distpicker",
                province: "province-e",  /*省*/
                city: "city-e",   /*市*/
                district: "district-e",   /*区*/
                provinceData: "",   /*省数据*/
                cityData: "", /*市数据*/
                districtData: "",   /*区数据*/
                districtshow:"",    /*是否展示区*/
                getData: function(provinceData, cityData, districtData) {
                    console.log(provinceData)
                    console.log(cityData)
                    console.log(districtData)
                }
            })
            
        </script>
    </body>
    

    </html>

    (function() { var city = function(options) { this.options = options; this.init(); } city.DEFAULT = { ele: "body", id: "distpicker", province: "province-e", city: "city-e", district: "district-e", provinceData: "", cityData: "", districtData: "", districtshow: "true", getData: function(provinceData, cityData, districtData) { console.log(provinceData) console.log(cityData) console.log(districtData) } } city.prototype.init = function() { this.view() } /*视图展示*/ city.prototype.view = function() { var self = this; var mainHtml = `<div class="cont"> <div class="cont-fluid"> <div class="row"> <div> <div data-toggle="distpicker" class="col-md-12" id={self.options.id} style="display: flex;align-items: center;padding: 0;">
    <div style="display: flex;align-items: center;padding: 0px;">
    <label>
    省:
    </label>

                                <div class="select">
                                    <select class="form-control" id=${self.options.province} value="——省——" style="padding: 0;width:130px">
                                        <option value="">——省——</option>
                                    </select>
                                </div>
                            </div>
                            <div style="display: flex;align-items: center;padding: 0px;">
                                <label class="city">
                                    市:
                                </label>
                                <div class="select">
                                    <select class="form-control" id=${self.options.city} style="width:130px">
                                        <option value="">——市——</option>
                                    </select>
                                </div>
                            </div>
                            <div class=" ${self.options.district+"show"}"   style="display: flex;align-items: center;padding: 0px;">
                                <label class="district">
                                    区:
                                </label>
                                <div class="select">
                                    <select class="form-control" id=${self.options.district} style="width:130px">
                                        <option value="">——区——</option>
                                    </select>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>`
        $(self.options.ele).append(mainHtml)
        if(self.options.districtshow == "false") {
            $("." + self.options.district + "show").remove()
        }
        html = '';
        value = '';
        area = '';
        /*获取省的数据*/
        $.each(cityData3, function(i, v) {
            html += `<option value=${v.text}>${v.text}</option>`;
        });
        $("#" + self.options.province).append(html)
        /*选取省的时候获取市的数据*/
        $("#" + self.options.province).on("change", function() {
            value = "";
            // 找出省的父级
            var parent = $(this).parent().parent();
            // 找当前省同级的市
            var citySelect = parent.next().find('select');
            // 找当前市同级的区
            districtSelect = parent.next().next().find('select');
            
            var index = parent.find("option:checked").index() - 1;
            if(index == -1) {
                citySelect.html(`<option value="">——市——</option>`);
                districtSelect.html('<option value="">——区——</option>');
                return;
            }
            cityData = cityData3[index].children;
            /*追加市的数据*/
            $.each(cityData, function(i, v) {
                    if ( i == 0 ) {
                        value += `<option value="">——市——</option><option value=${v.text}>${v.text}</option>`;
                    } else {
                        value += `<option value=${v.text}>${v.text}</option>`;
                    }
            });
            citySelect.html(value);
            /*市发生改变获取数据*/
            $("#" + self.options.city).on("change", function() {
                var area = "";
                districtSelect.find("option").remove();
                var inx = citySelect.find("option:checked").index() - 1;
                if(inx == -1) {
                    districtSelect.html('<option value="">——区——</option>');
                    return;
                }
                var districtData = cityData[inx].children;
                $.each(districtData, function(i, v) {
                    if ( i == 0 ) {
                        area += `<option value="">——区——</option><option value=${v.text}>${v.text}</option>`;
                    } else {
                        area += `<option value=${v.text}>${v.text}</option>`;
                    }
                });
                districtSelect.html(area);
            })
        })
        html = '';
        value = '';
        area = '';
        $("#" + self.options.province).on("change", function() {
            self.options.provinceData = "";
            self.options.cityData = "";
            self.options.districtData = "";
            self.options.provinceData = $(this).val()
            self.options.getData(self.options.provinceData, self.options.cityData, self.options.districtData)
    
        })
        $("#" + self.options.province).parent().parent().next().find('select').on("change", function() {
            self.options.cityData = $(this).val()
            self.options.getData(self.options.provinceData, self.options.cityData, self.options.districtData)
    
        })
    
        $("#" + self.options.province).parent().parent().next().next().find('select').on("change", function() {
            self.options.districtData = $(this).val()
            self.options.getData(self.options.provinceData, self.options.cityData, self.options.districtData)
    
        })
    
    }
    $.city = function(options) {
        var option = $.extend(true, {}, city.DEFAULT, options);
        return new city(options);
    }
    

    })(jQuery)

    相关文章

      网友评论

          本文标题:基于mui省市区数据自封插件

          本文链接:https://www.haomeiwen.com/subject/jmyfwftx.html