省市县三级联动(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 ...
随机推荐
- 在Nodejs中如何调用C#的代码
最近需要在Nodejs中用到C#的代码,从网上了解到可以采用Edgejs来实现Nodejs与C#的代码交互, 直接复制网上的代码运行总是出各种错,填了不少坑,现在把自己的案例代码大致整理一下,方便以后 ...
- python关于分割与拼接的那些事
1.split分割 基于re模块和正则表达式对象的方法split(),以后再做学习 基于字符串的split()方法 :字符串对象的split()方法也只能处理非常简单的情况,而且不支持多个分隔符,对分 ...
- UWP Composition API - GroupListView(一)
需求: 光看标题大家肯定不知道是什么东西,先上效果图: 这不就是ListView的Group效果吗?? 看上去是的.但是请听完需求.1.Group中的集合需要支持增量加载ISupportIncreme ...
- 将 xunit.runner.dnx 的 xml 输出转换为 Nunit 格式
由于目前 DNX 缺乏 XSLT 的转换能力,因此只能使用变通方法.具体参考这个链接 主要内容复制过来是: From @eriklarko on July 14, 2015 7:38 As a wor ...
- Beginning Scala study note(6) Scala Collections
Scala's object-oriented collections support mutable and immutable type hierarchies. Also support fun ...
- Linux学习笔记(9)-守护进程
明天学这个!! ---------------------------------------------------------- 守护进程(Daemon)是运行在后台的一种特殊进程.它独立于控制终 ...
- 自己用的jquery经常用的工具command
var Cmd = { Entity: { QueryString: {}, }, RootPath: function () { var pathName = window.location.pat ...
- [BZOJ1997][HNOI2010] 平面图判定
Description Input Output 是的..BZOJ样例都没给. 题解(from 出题人): 如果只考虑简单的平面图判定,这个问题是非常不好做的. 但是题目中有一个条件— ...
- liunux 修改hostname
最近鼓捣Oracle,记录些技巧 修改hostname # vim /ect/hosts # vim /etc/sysconfig/network 修改hostname # service netwo ...
- Web前端性能测试-性能测试知多少---深入分析前端站点的性能
针对目前接手的web前端的性能,一时间不知道从什么地方入手,然后经过查找资料,发现其实还是蛮简单的. 前端性能测试对象: HTML.CSS.JS.AJAX等前端技术开发的Web页面 影响用户浏览网页速 ...