省市县三级联动(jqurey+json)

1.效果图 

2.联动js

  1 /**
  2  * jquery.choosearea.js - 地区联动封装
  3 */
  4 ; (function ($) {
  5     var choosearea = function (options) {
  6         this.set = $.extend({
  7             dataUrl: "/Content/Js/city_code.js",
  8             selectDomId: {
  9                 province: "a",
 10                 city: "b",
 11                 county: "c"
 12             },
 13             data: null,
 14             initAreaIds: {
 15                 Province: 0,
 16                 City: 0,
 17                 County: 0
 18             },
 19             eventInterface: {
 20                 renderProvinceList: function (list, selectedId) {
 21                     this.jq_province.empty().append($(this.ProvinceListHtml(list, selectedId, "请选择省")));
 22                 },
 23                 renderCityList: function (list, selectedId, isInit) {
 24                     var city = this.jq_city;
 25                     isInit = typeof (isInit) == "undefined" ? false : true;
 26                     city.empty().append($(this.CityListHtml(list, selectedId, "请选择市")));
 27                 },
 28                 renderCountyList: function (list, selectedId, isInit) {
 29                     var optionsHtml = this.CountyListHtml(list, selectedId, "请选择县");
 30                     var county = this.jq_county;
 31                     isInit = typeof (isInit) == "undefined" ? false : true;
 32                     county.empty().append($(optionsHtml));
 33                 },
 34                 onchanged: function (cityId) {
 35
 36                 }
 37             }
 38
 39         }, options);
 40         this.provinceList = [];
 41         this.cityList = [];
 42         this.countyList = [];
 43         this.jq_province = $("#" + this.set.selectDomId.province);
 44         this.jq_city = $("#" + this.set.selectDomId.city);
 45         this.jq_county = $("#" + this.set.selectDomId.county);
 46         this._init();
 47     };
 48     choosearea.prototype = {};
 49     choosearea.fn = choosearea.prototype;
 50     choosearea.fn._init = function () {
 51         var _this = this;
 52         $.get(_this.set.dataUrl, {}, function (datajson) {
 53             _this.set.data = datajson
 54             _this._setAreaList();
 55             _this._initRender(_this.set.initAreaIds.Province, _this.set.initAreaIds.City, _this.set.initAreaIds.County);
 56             _this._initEvents();
 57         }, "json");
 58     };
 59     //设置地区列表
 60     choosearea.fn._setAreaList = function () {
 61         this.provinceList = this.set.data.provinceList;
 62         this.cityList = this.set.data.cityList;
 63         this.countyList = this.set.data.countyList;
 64     };
 65
 66     //初始化渲染
 67     choosearea.fn._initRender = function (provinceId, cityId, countyId) {
 68
 69         this.set.eventInterface.renderProvinceList.call(this, this.provinceList, provinceId);
 70         var cityList = $.grep(this.cityList, function (n, i) {
 71             return n.ProID == provinceId;
 72         });
 73         this.set.eventInterface.renderCityList.call(this, cityList, cityId, true);
 74         var countyList = $.grep(this.countyList, function (n, i) {
 75             return n.CityID == cityId;
 76         });
 77         this.set.eventInterface.renderCountyList.call(this, countyList, countyId, true);
 78     };
 79
 80     //渲染列表
 81     choosearea.fn.ProvinceListHtml = function (list, selectedId, firstTips) {
 82         firstTips = firstTips || "";
 83         var selectedAttr = selectedId == 0 ? " selected=‘selected‘" : "";
 84         var optionsHtml = firstTips != "" ? "<option value=‘0‘ " + selectedAttr + ">" + firstTips + "</option>" : "";
 85
 86         if (typeof (list) != "undefined") {
 87             $.each(list, function (i, city) {
 88                 var selAttr = selectedId == city.ProID ? " selected=‘selected‘" : "";
 89                 optionsHtml += "<option value=‘" + city.ProID + "‘ " + selAttr + ">" + city.ProName + "</option>";
 90             });
 91         };
 92         return optionsHtml;
 93     };
 94     //渲染列表
 95     choosearea.fn.CityListHtml = function (list, selectedId, firstTips) {
 96         firstTips = firstTips || "";
 97         var selectedAttr = selectedId == 0 ? " selected=‘selected‘" : "";
 98         var optionsHtml = firstTips != "" ? "<option value=‘0‘ " + selectedAttr + ">" + firstTips + "</option>" : "";
 99
100         if (typeof (list) != "undefined") {
101             $.each(list, function (i, city) {
102                 var selAttr = selectedId == city.CityID ? " selected=‘selected‘" : "";
103                 optionsHtml += "<option value=‘" + city.CityID + "‘ " + selAttr + ">" + city.CityName + "</option>";
104             });
105         };
106         return optionsHtml;
107     };
108     //渲染列表
109     choosearea.fn.CountyListHtml = function (list, selectedId, firstTips) {
110         firstTips = firstTips || "";
111         var selectedAttr = selectedId == 0 ? " selected=‘selected‘" : "";
112         var optionsHtml = firstTips != "" ? "<option value=‘0‘ " + selectedAttr + ">" + firstTips + "</option>" : "";
113         //console.log(list);
114         if (typeof (list) != "undefined") {
115             $.each(list, function (i, city) {
116                 var selAttr = selectedId == city.Id ? " selected=‘selected‘" : "";
117                 optionsHtml += "<option value=‘" + city.Id + "‘ " + selAttr + ">" + city.DisName + "</option>";
118             });
119         };
120         return optionsHtml;
121     };
122     //初始化事件
123     choosearea.fn._initEvents = function () {
124         var province = this.jq_province;
125         var city = this.jq_city;
126         var county = this.jq_county;
127         var _this = this;
128         province.change(function () {
129             var id = parseInt($(this).val());
130             var cityList = $.grep(_this.cityList, function (n, i) {
131                 return n.ProID == id;
132             });
133             _this.set.eventInterface.renderCityList.call(_this, cityList, 0);
134             _this.set.eventInterface.renderCountyList.call(_this, [], 0, false);
135         });
136
137         city.change(function () {
138             var id = parseInt($(this).val());
139             var countyList = $.grep(_this.countyList, function (n, i) {
140                 return n.CityID == id;
141             });
142             _this.set.eventInterface.renderCountyList.call(_this, countyList, 0, false);
143         });
144     };
145     $.choosearea = choosearea;
146 })(jQuery);

3.json数据

http://files.cnblogs.com/files/youngerliu/city_code.js

4.使用方法

  默认选择

new $.choosearea({
selectDomId: {
province: "selProvince",
city: "selCity",
county: "selCounty"
},
initAreaIds: {Province:"0",City:"0",County:"0"}
});

  指定选择

1   new $.choosearea({
2                 selectDomId: {
3                     province: "selProvince",
4                     city: "selCity",
5                     county: "selCounty"
6                 },
7                 initAreaIds:  {Province:"1",City:"1",County:"9"}
8             });
时间: 2024-10-07 06:52:14

省市县三级联动(jqurey+json)的相关文章

将省市县三级联动的json数据,转化为element-ui能用的格式,并使用

var options=[]; var cities = { '北京': { '北京': ['东城区', '西城区', '崇文区', '宣武区', '朝阳区', '丰台区', '石景山区', '海淀区', '门头沟区', '房山区', '通州区', '顺义区', '昌平区', '大兴区', '平谷区', '怀柔区', '密云县', '延庆县', '其他'] }, '天津': { '天津': ['和平区', '河东区', '河西区', '南开区', '河北区', '红挢区', '滨海新区', '东

android:省市县三级联动(基于json和spring)

一.请看效果图": 二.程序的代码: 1.MainActivity.java package com.loveplusplus.loader.demo.ui; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.os.Bundle; import android.os.Handler; im

Android省市县三级联动 真实项目抽出 调用只需3行代码 源码免积分下载

写在前面:没想到短短一夜之间就有910次阅读量,迄今为止最高阅读量的一篇,小激动! 项目源码:包含日期.省市县两种选择器[资源积分:0分] ,APK安装包下载,没有CSDN账户的的点此下载源码 fastjson:自己复制博客里源码的小伙伴,注意导入fastjson框架哦!阿里巴巴出品的最快json解析框架 日期选择器:效果图中的选择年月日的日期选择器 任何问题,欢迎评论:源码下载不成功的留下邮箱:文章我还在维护,持续优化,有问题的小伙伴积极评论哈. 先上效果图: 样式可以修改xml文件 省市县三

Android 省市县 三级联动(android-wheel的使用)[转]

转载:http://blog.csdn.net/lmj623565791/article/details/23382805 今天没事跟群里面侃大山,有个哥们说道Android Wheel这个控件,以为是Andriod内置的控件,google一把,发现是个github上的一个控件. 下载地址:https://code.google.com/p/android-wheel/    发现很适合做省市县三级联动就做了一个. 先看下效果图: 1.首先导入github上的wheel项目 2.新建个项目,然后

三级联动,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&g

Android 省市县 三级联动(android-wheel的使用)

转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/23382805 今天没事跟群里面侃大山,有个哥们说道Android Wheel这个控件,以为是Andriod内置的控件,google一把,发现是个github上的一个控件. 下载地址:https://code.google.com/p/android-wheel/    发现很适合做省市县三级联动就做了一个. 先看下效果图: 1.首先导入github上的wheel项目 2.新建个

全国最标准的、最完整的省市县三级联动选择 - 大型企业信息化系统集成快速开发平台

在使用通用权限管理系统时,需要经常使用省市县三级联动选择,在网上看到不少这类例子,感觉不是很满足我们的需求, 在使用的时候也用过通用权限系统中的省市县接口,为减少对接口的调用,现将其改为JS文件调用的方式:样式如下 JS文件截图 这个JS文件可根据基础信息中省市县资料的变更重新生成.其自动生成方法调用如下图: 省市县数据基本变化应该很小,为方便大家提供最新生成的JS文件和demo: district.js /* * UPDATE DATE:2015-01-06 22:04:16 songbiao

asp.net(c#)用Ajax调用web 服务实现省市县三级联动

1.先说说硬件配置,我最开始是在Win7(I7 4770,8G RAM,2T硬盘)里装ubuntu10.10 64位系统(4G RAM,200G 硬盘)进行源码编译,大概花了3个多小时.而且还多次出现outofmemoryerror 错误.最后将硬件升级为I7 4770.16G内存.2T硬盘,不装虚拟机,直接跑Ubuntu 10.10系统,Swap分区为16G,编译一次大概花了40分钟,没有报任何错误. 所以不推荐在虚拟机里面跑. 2.根据官方文档配置编译环境: 官方文档说的是在"发布包/Sof

day01课程回顾,数据类型,(用户登录限制登录三次,购物车,省市县三级联动)

Day01 Python的分类 Cpython:代码àc字节码->机器码   一行一行的编译执行 Pypy:   代码àc字节码->机器码   全部转换完再执行 其他python  代码-->其他字节码-->机器码 Python的执行 Windows:C:\Python35\python.exe    D:\1.txt(python可执行文件路径---解释器   执行文件) Linux:可以在文件的头部写#!/usr/bin/python    python安装路径(用命令wher