省市县三级联动(jqurey+json)
1.效果图

2.联动js
/**
* jquery.choosearea.js - 地区联动封装
*/
; (function ($) {
var choosearea = function (options) {
this.set = $.extend({
dataUrl: "/Content/Js/city_code.js",
selectDomId: {
province: "a",
city: "b",
county: "c"
},
data: null,
initAreaIds: {
Province: 0,
City: 0,
County: 0
},
eventInterface: {
renderProvinceList: function (list, selectedId) {
this.jq_province.empty().append($(this.ProvinceListHtml(list, selectedId, "请选择省")));
},
renderCityList: function (list, selectedId, isInit) {
var city = this.jq_city;
isInit = typeof (isInit) == "undefined" ? false : true;
city.empty().append($(this.CityListHtml(list, selectedId, "请选择市")));
},
renderCountyList: function (list, selectedId, isInit) {
var optionsHtml = this.CountyListHtml(list, selectedId, "请选择县");
var county = this.jq_county;
isInit = typeof (isInit) == "undefined" ? false : true;
county.empty().append($(optionsHtml));
},
onchanged: function (cityId) { }
} }, options);
this.provinceList = [];
this.cityList = [];
this.countyList = [];
this.jq_province = $("#" + this.set.selectDomId.province);
this.jq_city = $("#" + this.set.selectDomId.city);
this.jq_county = $("#" + this.set.selectDomId.county);
this._init();
};
choosearea.prototype = {};
choosearea.fn = choosearea.prototype;
choosearea.fn._init = function () {
var _this = this;
$.get(_this.set.dataUrl, {}, function (datajson) {
_this.set.data = datajson
_this._setAreaList();
_this._initRender(_this.set.initAreaIds.Province, _this.set.initAreaIds.City, _this.set.initAreaIds.County);
_this._initEvents();
}, "json");
};
//设置地区列表
choosearea.fn._setAreaList = function () {
this.provinceList = this.set.data.provinceList;
this.cityList = this.set.data.cityList;
this.countyList = this.set.data.countyList;
}; //初始化渲染
choosearea.fn._initRender = function (provinceId, cityId, countyId) { this.set.eventInterface.renderProvinceList.call(this, this.provinceList, provinceId);
var cityList = $.grep(this.cityList, function (n, i) {
return n.ProID == provinceId;
});
this.set.eventInterface.renderCityList.call(this, cityList, cityId, true);
var countyList = $.grep(this.countyList, function (n, i) {
return n.CityID == cityId;
});
this.set.eventInterface.renderCountyList.call(this, countyList, countyId, true);
}; //渲染列表
choosearea.fn.ProvinceListHtml = function (list, selectedId, firstTips) {
firstTips = firstTips || "";
var selectedAttr = selectedId == 0 ? " selected='selected'" : "";
var optionsHtml = firstTips != "" ? "<option value='0' " + selectedAttr + ">" + firstTips + "</option>" : ""; if (typeof (list) != "undefined") {
$.each(list, function (i, city) {
var selAttr = selectedId == city.ProID ? " selected='selected'" : "";
optionsHtml += "<option value='" + city.ProID + "' " + selAttr + ">" + city.ProName + "</option>";
});
};
return optionsHtml;
};
//渲染列表
choosearea.fn.CityListHtml = function (list, selectedId, firstTips) {
firstTips = firstTips || "";
var selectedAttr = selectedId == 0 ? " selected='selected'" : "";
var optionsHtml = firstTips != "" ? "<option value='0' " + selectedAttr + ">" + firstTips + "</option>" : ""; if (typeof (list) != "undefined") {
$.each(list, function (i, city) {
var selAttr = selectedId == city.CityID ? " selected='selected'" : "";
optionsHtml += "<option value='" + city.CityID + "' " + selAttr + ">" + city.CityName + "</option>";
});
};
return optionsHtml;
};
//渲染列表
choosearea.fn.CountyListHtml = function (list, selectedId, firstTips) {
firstTips = firstTips || "";
var selectedAttr = selectedId == 0 ? " selected='selected'" : "";
var optionsHtml = firstTips != "" ? "<option value='0' " + selectedAttr + ">" + firstTips + "</option>" : "";
//console.log(list);
if (typeof (list) != "undefined") {
$.each(list, function (i, city) {
var selAttr = selectedId == city.Id ? " selected='selected'" : "";
optionsHtml += "<option value='" + city.Id + "' " + selAttr + ">" + city.DisName + "</option>";
});
};
return optionsHtml;
};
//初始化事件
choosearea.fn._initEvents = function () {
var province = this.jq_province;
var city = this.jq_city;
var county = this.jq_county;
var _this = this;
province.change(function () {
var id = parseInt($(this).val());
var cityList = $.grep(_this.cityList, function (n, i) {
return n.ProID == id;
});
_this.set.eventInterface.renderCityList.call(_this, cityList, 0);
_this.set.eventInterface.renderCountyList.call(_this, [], 0, false);
}); city.change(function () {
var id = parseInt($(this).val());
var countyList = $.grep(_this.countyList, function (n, i) {
return n.CityID == id;
});
_this.set.eventInterface.renderCountyList.call(_this, countyList, 0, false);
});
};
$.choosearea = choosearea;
})(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"}
});
指定选择
new $.choosearea({
selectDomId: {
province: "selProvince",
city: "selCity",
county: "selCounty"
},
initAreaIds: {Province:"1",City:"1",County:"9"}
});
省市县三级联动(jqurey+json)的更多相关文章
- 将省市县三级联动的json数据,转化为element-ui能用的格式,并使用
var options=[]; var cities = { '北京': { '北京': ['东城区', '西城区', '崇文区', '宣武区', '朝阳区', '丰台区', '石景山区', '海淀区 ...
- android:省市县三级联动(基于json和spring)
一.请看效果图": 二.程序的代码: 1.MainActivity.java package com.loveplusplus.loader.demo.ui; import org.json ...
- wex5 实战 省市县三级联动与地址薄同步
无论是商城,还是快递,都要用到省市县三级联动,和地址薄,今天就以实战来制作,难点有3个: 1:三级联动,有wex5组件实现,相对简单,实战里对行数据进行了拼接 2: 地址薄选项,利用inputSel ...
- Android 省市县 三级联动(android-wheel的使用)[转]
转载:http://blog.csdn.net/lmj623565791/article/details/23382805 今天没事跟群里面侃大山,有个哥们说道Android Wheel这个控件,以为 ...
- Android 省市县 三级联动(android-wheel的使用)
转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/23382805 今天没事跟群里面侃大山,有个哥们说道Android Wheel这个 ...
- php仿经典省市县三级联动
之前有个需求要写个类似省市县三级联动的页面,于是,网上找了点资料看了下,其实原理很简单: 当我们选择一级栏目中某条记录的时候,会获取该栏目的vaule值,并发起ajax请求,后台根据这个vaule值, ...
- 项目总结01:JSP mysql SpringMvc下中国省市县三级联动下拉框
JSP mysql SpringMvc下中国省市县三级联动下拉框 关键词 JSP mysql数据库 SpringMvc ajax Controller层 Service层 中国地区 省 ...
- jQuery - 全国省市县三级联动
最近有空用jquery做了一个全国省市县的三级联动,在以后或许可以用的到 ,遗憾的是我还没用封装,等有空看能不能封装成一个插件 废话不多说,贴上代码: <!doctype html> &l ...
- 省市县三级联动 sql语句
发现在网上的省市县三级联动大部分是mysql的.就算是sqlserver的,也不准确.于是就把mysql的给改了下,适用sqlserver.sql语句如下: CREATE TABLE Dic_Area ...
随机推荐
- jquery Datatables 行数据删除、行上升、行下降功能演示
Datatables 是一款jquery表格插件.它是一个高度灵活的工具,可以将任何HTML表格添加高级的交互功能. 官方网站:http://www.datatables.net Datatables ...
- json 序列化为数组
我们通常从后台取到json格式的数据到前台进行展示,在这个过程中可能户遇到一些json格式不是自己想要的格式,今天本人就遇到一个棘手的问题,最后在师傅的协助下才进行了正确格式的转换. 可以说最悲哀的莫 ...
- C#操作XML之读取数据
List<Ztree> ZTreeList = new List<Ztree>(); XDocument MenuConfigDoc = XDocument.Load(&quo ...
- 分布式之Zookeeper使用
在zookeeper中可分为单一模式和集群模式. 具体详细的配置与操作,可参见:http://blog.csdn.net/shatelang/article/details/7596007. 单一模式 ...
- 技术杂记-改造具有监控功能的数据库连接池阿里Druid,支持simple-jndi,kettle
kettle内置的jndi管理是simple-jndi,功能确实比较简单,我需要监控kettle性能,druid确实是很不错的选择,但没有提供对应的支持,我改进了druid源码,实现了simple-j ...
- 【转载】兼容php5,php7的cURL文件上传示例
转载来自: http://www.huanlinna.com/2016/06/25/coding/php5-php7-upload-demo-via-curl.html https://segment ...
- 基于SOUI开发的应用展示
本页面列出基于SOUI开发的产品 欢迎使用SOUI的朋友提供资源:setoutsoft#qq.com #->@ 千万级平台后台在线监测客户端 1, 主页:用于显示管理服务端在线情况,左侧栏包括 ...
- TOP 和 OFFSET 筛选(转)
SQL Server 对行数的排序提供了 TOP 筛选.SQL Server 2012 新增了 OFFSET 筛选. 一.TOP 筛选 如果有 ORDER BY 子句,TOP 筛选将根据排序的结果返回 ...
- Idea 实时编译 和 热部署
实时编译 idea自动保存编写好的文件,但是不会编译,想要编译需要按ctrl+F9(编译整个项目)ctrl+shift+f9(单个文件),不仅麻烦而且和平常习惯也不相复合.怎么令idea的ctrl+s ...
- UGUI研究院之控件以及按钮的监听事件系统
继续学习,我相信大家在做NGUI开发的时候处理事件都会用到UIEventListener,那么UGUI中怎么办呢?先看UGUI的事件有那些吧 Supported Events The Eventsys ...