基于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 相关文章推荐
收藏一些不常用,但是有用的代码
Mar 12 Javascript
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
Nov 14 Javascript
js实现类似新浪微博首页内容渐显效果的方法
Apr 10 Javascript
javascript自定义右键弹出菜单实现方法
May 25 Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
Jul 17 Javascript
jQuery 1.9.1源码分析系列(十五)之动画处理
Dec 03 Javascript
jquery拖拽效果完整实例(附demo源码下载)
Jan 14 Javascript
JS排序之选择排序详解
Apr 08 Javascript
详解Node.js 中使用 ECDSA 签名遇到的坑
Nov 26 Javascript
bootstrap+spring boot实现面包屑导航功能(前端代码)
Oct 09 Javascript
vue 项目打包时样式及背景图片路径找不到的解决方式
Nov 12 Javascript
详解vue身份认证管理和租户管理
May 25 Vue.js
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连接SQLSERVER 注意事项(附dll文件下载)
2012/06/28 PHP
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
禁止直接访问php文件代码分享
2020/05/05 PHP
js 数组操作代码集锦
2009/04/28 Javascript
JavaScript Event学习第五章 高级事件注册模型
2010/02/07 Javascript
js子页面获取父页面数据示例
2014/05/15 Javascript
在JavaScript中call()与apply()区别
2016/01/22 Javascript
JS SetInterval 代码实现页面轮询
2017/08/11 Javascript
React-Native左右联动List的示例代码
2017/09/21 Javascript
Nodejs中crypto模块的安全知识讲解
2018/01/03 NodeJs
分享5个好用的javascript文件上传插件
2018/09/16 Javascript
vue-cli系列之vue-cli-service整体架构浅析
2019/01/14 Javascript
小程序实现多列选择器
2019/02/15 Javascript
WebGL three.js学习笔记之阴影与实现物体的动画效果
2019/04/25 Javascript
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
2019/06/10 jQuery
使用Vue-cli 中为单独页面设置背景图片铺满全屏
2020/07/17 Javascript
通过代码实例展示Python中列表生成式的用法
2015/03/31 Python
python 删除非空文件夹的实例
2018/04/26 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
python 含子图的gif生成时内存溢出的方法
2019/07/07 Python
解决python 上传图片限制格式问题
2019/10/30 Python
python正则表达式匹配IP代码实例
2019/12/28 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
2020/07/07 Python
HTML5新增的表单元素和属性实例解析
2014/07/07 HTML / CSS
Get The Label中文官网:英国运动时尚购物平台
2017/04/19 全球购物
校园学雷锋活动月总结
2014/03/09 职场文书
护士个人自我鉴定
2014/03/24 职场文书
幼儿教师寄语集锦
2014/04/03 职场文书
交通事故协议书
2014/04/15 职场文书
建议书的格式
2014/05/12 职场文书
行政部经理助理岗位职责
2014/06/15 职场文书
保护地球的标语
2014/06/17 职场文书
学雷锋标语
2014/06/25 职场文书
党的群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
2015年入党积极分子评语
2015/03/26 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书