基于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 相关文章推荐
ie和firefox中img对象区别的困惑
Dec 27 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
Sep 15 Javascript
JS实现双击屏幕滚动效果代码
Oct 28 Javascript
浅析JavaScript Array和string的转换(推荐)
May 20 Javascript
Javascript删除指定元素节点的方法
Jun 21 Javascript
js获取指定字符前/后的字符串简单实例
Oct 27 Javascript
Angular页面间切换及传值的4种方法
Nov 04 Javascript
Js apply方法详解
Feb 16 Javascript
webpack公共组件引用路径简化小技巧
Jun 15 Javascript
vue eslint简要配置教程详解
Jul 26 Javascript
layerui代码控制tab选项卡,添加,关闭的实例
Sep 04 Javascript
vue实现点击按钮“查看详情”弹窗展示详情列表操作
Sep 09 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
Classes and Objects in PHP5-面向对象编程 [1]
2006/10/09 PHP
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
Apache中php.ini的设置方法
2013/02/28 PHP
php使用Jpgraph创建3D饼形图效果示例
2017/02/15 PHP
php可变长参数处理函数详解
2017/02/22 PHP
ThinkPHP中调用PHPExcel的实现代码
2017/04/08 PHP
JavaScript点击按钮后弹出透明浮动层的方法
2015/05/11 Javascript
Javascript监视变量变化的方法
2015/06/09 Javascript
JavaScript实现表格快速变色效果代码
2015/08/19 Javascript
基于Jquery代码实现手风琴菜单
2015/11/19 Javascript
谷歌Chrome浏览器扩展程序开发小记
2016/01/06 Javascript
使用jquery提交form表单并自定义action的实现代码
2016/05/25 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
2016/05/30 Javascript
layui 实现加载动画以及非真实加载进度的方法
2019/09/23 Javascript
VUE实时监听元素距离顶部高度的操作
2020/07/29 Javascript
微信小程序实现底部弹出模态框
2020/11/18 Javascript
[01:02:30]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
Python程序员面试题 你必须提前准备!(答案及解析)
2018/01/23 Python
Python实现的简单计算器功能详解
2018/08/25 Python
pygame实现雷电游戏雏形开发
2018/11/20 Python
Laravel+Dingo/Api 自定义响应的实现
2019/02/17 Python
解决python3中的requests解析中文页面出现乱码问题
2019/04/19 Python
tensorflow查看ckpt各节点名称实例
2020/01/21 Python
六种酷炫Python运行进度条效果的实现代码
2020/07/17 Python
python爬虫用scrapy获取影片的实例分析
2020/11/23 Python
python中判断数字是否为质数的实例讲解
2020/12/06 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
2020/12/11 Python
美国领先的奢侈美容零售商:Bluemercury
2017/07/26 全球购物
联想瑞士官方网站:Lenovo Switzerland
2017/11/19 全球购物
犯错检讨书
2014/02/21 职场文书
《少年王勃》教学反思
2014/04/27 职场文书
个人投资计划书
2014/05/01 职场文书
差生评语大全
2014/05/04 职场文书
2015年社区关工委工作总结
2015/04/03 职场文书
消防演习感想
2015/08/10 职场文书