PageSourceSearch

https://public.skyworthxr.com/officialWebsite/inland/assets/jQuery/jquery.citys.js

js skyworthxr.com collected 2026-10-07 06:55:30 UTC 14,496 bytes, 297 lines download raw bytes

1/**
2 * jquery.citys.js 1.2
3 * http://jquerywidget.com
4 */
5(function (factory) {
6    if (typeof define === "function" && define.amd){
7        // AMD
8        if (typeof jQuery === 'undefined') {
9            define(['jquery'],factory);
10        }else{
11            define(function(){
12                factory(jQuery);
13            });
14        }
15    }else if (typeof define === "function" && define.cmd){
16        // CMD
17        if (typeof jQuery === 'undefined') {
18            define(function(require){
19                var jQuery = require('jquery');
20                factory(jQuery);
21            });
22        }else{
23            define(function(){
24                factory(jQuery);
25            });
26        }
27    } else if (typeof module === 'object' && module.exports) {
28        // Node/CommonJS
29        module.exports = function( root, jQuery ) {
30            if (typeof jQuery === 'undefined') {
31                if (typeof window !== 'undefined' ) {
32                    jQuery = require('jquery');
33                } else {
34                    jQuery = require('jquery')(root);
35                }
36            }
37            factory(jQuery);
38            return jQuery;
39        };
40    } else {
41        //Browser globals
42        factory(jQuery);
43    }
44}(function ($) {
45    $.support.cors = true;
46    $.fn.citys = function(parameter,getApi) {
47        if(typeof parameter == 'function'){ //重载
48            getApi = parameter;
49            parameter = {};
50        }else{
51            parameter = parameter || {};
52            getApi = getApi||function(){};
53        }
54        var defaults = {
55            data:null,                //数据源
56            dataUrl:'https://passer-by.com/data_location/list.json',     //数据库地址
57            crossDomain: true,        //是否开启跨域
58            dataType:'json',          //数据库类型:'json'或'jsonp'
59            provinceField:'province', //省份字段名
60            cityField:'city',         //城市字段名
61            districtField:'district',         //地区字段名
62            valueType:'name',         //下拉框值的类型,code行政区划代码,name地名
63            code:0,                   //地区编码
64            province:0,               //省份,可以为地区编码或者名称
65            city:0,                   //城市,可以为地区编码或者名称
66            district:0,               //地区,可以为地区编码或者名称
67            required: true,           //是否必须选一个
68            nodata: 'hidden',         //当无数据时的表现形式:'hidden'隐藏,'disabled'禁用,为空不做任何处理
69            placeholder:' - 请选择 - ',          // 默认项
70            onChange:function(){}     //地区切换时触发,回调函数传入地区数据
71        };
72        var options = $.extend({}, defaults, parameter);
73        return this.each(function() {
74            //对象定义
75            var _api = {};
76            var $this = $(this);
77            var $province = $this.find('select[name="'+options.provinceField+'"]'),
78                $city = $this.find('select[name="'+options.cityField+'"]'),
79                $district = $this.find('select[name="'+options.districtField+'"]');
80            var init = function(data){
81                var province,city,district,hasCity;
82                var initCode = function(){
83                    if(options.code){   //如果设置地区编码,则忽略单独设置的信息
84                        var code =  options.code.toString();
85                        var c = code.replace(/\d{4}$/,'0000');
86                        if(data[c]){
87                            options.province = c;
88                        }
89                        c = code.replace(/\d{2}$/,'00');
90                        if(data[c]){
91                            options.city = c;
92                        }
93                        c = options.code%1e2 ? options.code : '';
94                        options.district = c;
95                    }else{
96                        options.province = ($province.val()||'').toString().replace(/\d{4}$/,'0000');
97                        options.city = ($city.val()||'').toString().replace(/\d{2}$/,'00');
98                        options.district = ($district.val()||'').toString();
99                    }
100                };
101                var updateCode = function(){
102                    province={},city={},district={};
103                    hasCity = false;       //判断是非有地级城市
104                    for(var code in data){
105                        if(code.match(/0000$/)){
106                            province[code]=data[code];
107                            if(options.required&&!options.province){
108                                if(options.city&&options.city.match(/0000$/)){  //省未填,并判断为直辖市
109                                    options.province = options.city;
110                                }else{
111                                    options.province = code;
112                                }
113                            }else if(isNaN(options.province)&&data[code].indexOf(options.province)>-1){
114                                options.province = code;
115                            }
116                        }
117                    }
118                    if(options.province){
119                        for(var code in data){
120                            var prefix = code.replace(/\d{4}$/,'0000');
121                            if(code!=prefix&&prefix==options.province){
122                                if(code.match(/00$/)){
123                                    hasCity = true;
124                                    city[code]=data[code];
125                                    if(options.required&&!options.city){
126                                        options.city = code;
127                                    }else if(isNaN(options.city)&&data[code].indexOf(options.city)>-1){
128                                        options.city = code;
129                                    }
130                                }else if(code.match(/[89]0\d{2}$/)){
131                                    city[code] = data[code];
132                                    if(options.required&&!options.city){
133                                        options.city = code;
134                                    }else if(isNaN(options.city)&&data[code].indexOf(options.city)>-1){
135                                        options.city = code;
136                                    }
137                                }
138                            }
139                        }
140                    }
141                    if(hasCity){
142                        if(options.city){
143                            for(var code in data){
144                                var prefix = code.replace(/\d{2}$/,'00');
145                                if(code!=prefix&&prefix==options.city){
146                                    district[code] = data[code];
147                                    if(options.required&&!options.district){
148                                        options.district = code;
149                                    }else if(isNaN(options.district)&&data[code].indexOf(options.district)>-1){
150                                        options.district = code;
151                                    }
152                                }
153                            }
154                        }
155                    }else{
156                        for(var code in data){
157                            var prefix = code.replace(/\d{4}$/,'0000');
158                            if(code!=prefix&&prefix==options.province){
159                                district[code] = data[code];
160                                if(options.required&&!options.district){
161                                    options.district = code;
162                                }else if(isNaN(options.district)&&data[code].indexOf(options.district)>-1){
163                                    options.district = code;
164                                }
165                            }
166                        }
167                    }
168                };
169                var format = {
170                    province:function(){
171                        $province.empty();
172                        if(!options.required){
173                            $province.append('<option value="">'+options.placeholder+'</option>');
174                        }
175                        for(var i in province){
176                            $province.append('<option value="'+(options.valueType=='code'?i:province[i])+'"  data-code="'+i+'">'+province[i]+'</option>');
177                        }
178                        if(options.province){
179                            var value = options.valueType=='code'?options.province:prov
179ince[options.province];
180                            $province.val(value);
181                        }
182                        this.city();
183                    },
184                    city:function(){
185                        $city.empty();
186                        if(!hasCity){
187                            $city.css('display','none');
188                        }else{
189                            $city.css('display','');
190                            if(!options.required){
191                                $city.append('<option value="">'+options.placeholder+'</option>');
192                            }
193                            if(options.nodata=='disabled'){
194                                $city.prop('disabled',$.isEmptyObject(city));
195                            }else if(options.nodata=='hidden'){
196                                $city.css('display',$.isEmptyObject(city)?'none':'');
197                            }
198                            for(var i in city){
199                                $city.append('<option value="'+(options.valueType=='code'?i:city[i])+'" data-code="'+i+'">'+city[i]+'</option>');
200                            }
201                            if(options.city){
202                                var value = options.valueType=='code'?options.city:city[options.city];
203                                $city.val(value);
204                            }else if(options.district){
205                                var value = options.valueType=='code'?options.district:city[options.district];
206                                $city.val(value);
207                            }
208                        }
209                        this.district();
210                    },
211                    district:function(){
212                        $district.empty();
213                        if(!options.required){
214                            $district.append('<option value="">'+options.placeholder+'</option>');
215                        }
216                        if(options.nodata=='disabled'){
217                            $district.prop('disabled',$.isEmptyObject(district));
218                        }else if(options.nodata=='hidden'){
219                            $district.css('display',$.isEmptyObject(district)?'none':'');
220                        }
221                        for(var i in district){
222                            $district.append('<option value="'+(options.valueType=='code'?i:district[i])+'" data-code="'+i+'">'+district[i]+'</option>');
223                        }
224                        if(options.district){
225                            var value = options.valueType=='code'?options.district:district[options.district];
226                            $district.val(value);
227                        }
228                    }
229                };
230                // 设置值
231                _api.setCode = function(code){
232                    options.code = code;
233                    initCode();
234                    updateCode();
235                    format.province();
236                };
237                // 获取当前地理信息
238                _api.getInfo = function(){
239                    var status = {
240                        direct:!hasCity,
241                        province:data[options.province]||'',
242                        city:data[options.city]||'',
243                        district:data[options.district]||''
244                    };
245                    if($district.length){
246                        status['code'] = options.district||options.city||options.province;
247                    }else if($city.length){
248                        status['code'] = options.city||options.province;
249                    }else if($province.length){
250                        status['code'] = options.province;
251                    }else{
252                        status['code'] = 0;
253                    }
254                    return status;
255                };
256                // 事件绑定
257                $province.on('change',function(){
258                    options.province = $(this).find('option:selected').data('code')||0; //选中节点的区划代码
259                    options.city = 0;
260                    options.district = 0;
261                    updateCode();
262                    format.city();
263                    options.onChange(_api.getInfo());
264                });
265                $city.on('change',function(){
266                    options.city = $(this).find('option:selected').data('code')||0; //选中节点的区划代码
267                    options.district = 0;
268                    updateCode();
269                    format.district();
270                    options.onChange(_api.getInfo());
271                });
272                $district.on('change',function(){
273                    options.district = $(this).find('option:selected').data('code')||0; //选中节点的区划代码
274                    options.onChange(_api.getInfo());
275                });
276                // 初始化
277                initCode();
278                updateCode();
279                format.province();
280                options.onChange(_api.getInfo());
281                getApi(_api);
282            };
283            if(options.data){
284                init(options.data);
285            }else{
286                $.ajax({
287                    url:options.dataUrl,
288                    type:'GET',
289                    crossDomain: options.crossDomain,
290                    dataType:options.dataType,
291                    jsonpCallback:'jsonp_location',
292                    success:init
293                });
294            }
295        });
296    };
297}));

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.