基于jquery & json的省市区联动代码


Posted in Javascript onJune 26, 2012

效果演示:

基于jquery & json的省市区联动代码

html代码:

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8" /> 
<title>省市区联动</title> 
<script src="/Scripts/jquery.min.js" type="text/javascript"></script> 
<script src="/Scripts/script.js" type="text/javascript"></script> 
</head> 
<body> 
<h2>Demo:</h2> 
<select id="province"> 
<option value="0">请选择省份</option> 
</select> 
<select id="city"> 
<option value="0">请选择城市</option> 
</select> 
<select id="district"> 
<option value="0">请选择区县</option> 
</select> <!--下列为初始值(可选,编辑表单时设置)--> 
<input type="hidden" value="440000" id="pre_province"/> 
<input type="hidden" value="440500" id="pre_city"/> 
<input type="hidden" value="440511" id="pre_district"/> 
</body> 
</html>

script.js代码:

/* 
author: elycir 
create: 2012-06 
description: 省市区三级(二级)联动 
*/ 
$(function () { 
var citySelector = function () { 
var province = $("#province"); 
var city = $("#city"); 
var district = $("#district"); 
var preProvince = $("#pre_province"); 
var preCity = $("#pre_city"); 
var preDistrict = $("#pre_district"); 
var jsonProvince = "/content/json-array-of-province.js"; 
var jsonCity = "/content/json-array-of-city.js"; 
var jsonDistrict = "/content/json-array-of-district.js"; 
var hasDistrict = true; 
var initProvince = "<option value='0'>请选择省份</option>"; 
var initCity = "<option value='0'>请选择城市</option>"; 
var initDistrict = "<option value='0'>请选择区县</option>"; 
return { 
Init: function () { 
var that = this; 
that._LoadOptions(jsonProvince, preProvince, province, null, 0, initProvince); 
province.change(function () { 
that._LoadOptions(jsonCity, preCity, city, province, 2, initCity); 
}); 
if (hasDistrict) { 
city.change(function () { 
that._LoadOptions(jsonDistrict, preDistrict, district, city, 4, initDistrict); 
}); 
province.change(function () { 
city.change(); 
}); 
} 
province.change(); 
}, 
_LoadOptions: function (datapath, preobj, targetobj, parentobj, comparelen, initoption) { 
$.get( 
datapath, 
function (r) { 
var t = ''; // t: html容器 
var s; // s: 选中标识 
var pre; // pre: 初始值 
if (preobj === undefined) { 
pre = 0; 
} else { 
pre = preobj.val(); 
} 
for (var i = 0; i < r.length; i++) { 
s = ''; 
if (comparelen === 0) { 
if (pre !== "" && pre !== 0 && r[i].code === pre) { 
s = ' selected=\"selected\" '; 
pre = ''; 
} 
t += '<option value=' + r[i].code + s + '>' + r[i].name + '</option>'; 
} 
else { 
var p = parentobj.val(); 
if (p.substring(0, comparelen) === r[i].code.substring(0, comparelen)) { 
if (pre !== "" && pre !== 0 && r[i].code === pre) { 
s = ' selected=\"selected\" '; 
pre = ''; 
} 
t += '<option value=' + r[i].code + s + '>' + r[i].name + '</option>'; 
} 
} } 
if (initoption !== '') { 
targetobj.html(initoption + t); 
} else { 
targetobj.html(t); 
} 
}, 
"json" 
); 
} 
}; 
} (); 
citySelector.Init(); 
});

省市区json数据文件:点击下载
Javascript 相关文章推荐
半角全角相互转换的js函数
Oct 16 Javascript
javascript来定义类的规范小结
Nov 19 Javascript
javascript属性访问表达式用法分析
Apr 25 Javascript
js实现继承的5种方式
Dec 01 Javascript
JavaScript操作class和style样式代码详解
Feb 13 Javascript
Bootstrap modal使用及点击外部不消失的解决方法
Dec 13 Javascript
React native ListView 增加顶部下拉刷新和底下点击刷新示例
Apr 27 Javascript
如何解决.vue文件url引用文件的问题
Jan 18 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
Mar 11 Javascript
js中async函数结合promise的小案例浅析
Apr 14 Javascript
JS localStorage存储对象,sessionStorage存储数组对象操作示例
Feb 15 Javascript
JS中==、===你分清楚了吗
Mar 04 Javascript
jquery命令汇总,方便使用jquery的朋友
Jun 26 #Javascript
Jvascript学习实践案例(开发常用)
Jun 25 #Javascript
来自国外的30个基于jquery的Web下拉菜单
Jun 22 #Javascript
增强用户体验友好性之jquery easyui window 窗口关闭时的提示
Jun 22 #Javascript
用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
Jun 22 #Javascript
javascript作用域容易记错的两个地方分析
Jun 22 #Javascript
基于Jquery实现的一个图片滚动切换
Jun 21 #Javascript
You might like
中国站长站 For Dede4.0 采集规则
2007/05/27 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
如何优雅的使用 laravel 的 validator验证方法
2018/11/11 PHP
让iframe子窗体取父窗体地址栏参数(querystring)
2009/10/13 Javascript
jQuery1.4.2与老版本json格式兼容的解决方法
2011/02/12 Javascript
一个判断抢购时间是否到达的简单的js函数
2014/06/23 Javascript
jQuery将所有被选中的checkbox某个属性值连接成字符串的方法
2015/01/24 Javascript
图解JavaScript中的this关键字
2020/05/28 Javascript
WEB前端开发都应知道的jquery小技巧及jquery三个简写
2015/11/15 Javascript
jquery实现触发时更新下拉列表内容的方法
2015/12/02 Javascript
实例讲解JS中setTimeout()的用法
2016/01/28 Javascript
JavaScript使用键盘输入控制实现数字验证功能
2016/08/19 Javascript
通过扫描二维码打开app的实现代码
2016/11/10 Javascript
使用vue.js编写蓝色拼图小游戏
2017/03/17 Javascript
关于Vue实现组件信息的缓存问题
2017/08/23 Javascript
node前端开发模板引擎Jade的入门
2018/05/11 Javascript
vue绑定事件后获取绑定事件中的this方法
2018/09/15 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
2018/09/21 Javascript
微信小程序实现左侧滑栏过程解析
2019/08/26 Javascript
解决vue无法侦听数组及对象属性的变化问题
2020/07/17 Javascript
解决vue bus.$emit触发第一次$on监听不到问题
2020/07/28 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
2020/08/13 Javascript
使用TensorFlow实现简单线性回归模型
2019/07/19 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
Python socket 套接字实现通信详解
2019/08/27 Python
Django使用Profile扩展User模块方式
2020/05/14 Python
is_file和file_exists效率比较
2021/03/14 PHP
纯CSS3实现运行时钟的示例代码
2021/01/25 HTML / CSS
《小熊住山洞》教学反思
2014/02/21 职场文书
知识改变命运演讲稿
2014/05/21 职场文书
暑假社会实践心得体会
2014/09/02 职场文书
2014年机关党委工作总结
2014/12/11 职场文书
劳资员岗位职责
2015/02/13 职场文书
2015年度公共机构节能工作总结
2015/05/26 职场文书
CSS的class与id常用的命名规则
2021/05/18 HTML / CSS
Windows11里微软已经将驱动程序安装位置A盘删除
2021/11/21 数码科技