基于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 获取Gridview选中行的内容操作步骤
Feb 05 Javascript
动态标签 悬停效果 延迟加载示例代码
Nov 21 Javascript
js如何调用qq互联api实现第三方登录
Mar 28 Javascript
jquery实现的鼠标下拉滚动置顶效果
Jul 24 Javascript
非jQuery实现照片散落桌子上,单击放大的LightBox效果
Nov 28 Javascript
javascript与css3动画结合使用小结
Mar 11 Javascript
jQuery使用hide方法隐藏页面上指定元素的方法
Mar 30 Javascript
用JS动态设置CSS样式常见方法小结(推荐)
Nov 10 Javascript
JS手机端touch事件计算滑动距离的方法示例
Oct 26 Javascript
vue-router路由与页面间导航实例解析
Nov 07 Javascript
Vue项目全局配置页面缓存之按需读取缓存的实现详解
Aug 01 Javascript
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
Aug 08 jQuery
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
php !function_exists(&quot;T7FC56270E7A70FA81A5935B72EACBE29&quot;))代码解密
2011/01/07 PHP
Php Image Resize图片大小调整的函数代码
2011/01/17 PHP
php判断ip黑名单程序代码实例
2014/02/24 PHP
PHP获取中英混合字符串长度的方法
2014/06/07 PHP
php绘制圆形的方法
2015/01/24 PHP
基于OpenCart 开发支付宝,财付通,微信支付参数错误问题
2015/10/01 PHP
简单实现PHP留言板功能
2016/12/21 PHP
PhpStorm配置Xdebug调试的方法步骤
2019/02/02 PHP
Laravel框架验证码类用法实例分析
2019/09/11 PHP
Laravel框架集合用法实例浅析
2020/05/14 PHP
jQuery UI AutoComplete 自动完成使用小记
2010/08/21 Javascript
使用JavaScript进行进制转换将字符串转换为十进制
2014/09/21 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
js中日期的加减法
2015/05/06 Javascript
vue.js表格分页示例
2016/10/18 Javascript
bootstrap Table的一些小操作
2017/11/01 Javascript
解决vue v-for 遍历循环时key值报错的问题
2018/09/06 Javascript
如何让node运行es6模块文件及其原理详解
2018/12/11 Javascript
微信小程序获取当前时间及星期几的实例代码
2020/09/20 Javascript
[02:02:38]VG vs Mineski Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
python使用arp欺骗伪造网关的方法
2015/04/24 Python
在Python的Django框架中调用方法和处理无效变量
2015/07/15 Python
python数组过滤实现方法
2015/07/27 Python
python中requests使用代理proxies方法介绍
2017/10/25 Python
Python标准库inspect的具体使用方法
2017/12/06 Python
详解Python3 中的字符串格式化语法
2020/01/15 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
2020/02/21 Python
TensorFlow-gpu和opencv安装详细教程
2020/06/30 Python
python 简单的调用有道翻译
2020/11/25 Python
LTD Commodities:礼品,独特发现,家居装饰,家用器皿
2017/08/11 全球购物
党员公开承诺书内容
2014/05/20 职场文书
测控技术自荐信
2014/06/05 职场文书
机械专业技术员求职信
2014/06/14 职场文书
死亡赔偿协议书
2015/01/28 职场文书
幼儿园2015年度工作总结
2015/04/01 职场文书
2016年第二十五次全国助残日活动总结
2016/04/01 职场文书