基于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中简单的实现像C#中using功能(有源码下载)
Jan 09 Javascript
常用javascript表单验证汇总
Jul 20 Javascript
详解JavaScript for循环中发送AJAX请求问题
Jun 23 Javascript
JS实时弹出新消息提示框并有提示音响起的实现代码
Apr 20 Javascript
AngularJS使用自定义指令替代ng-repeat的方法
Sep 17 Javascript
AngularJS使用angular.bootstrap完成模块手动加载的方法分析
Jan 19 Javascript
ES6入门教程之let和const命令详解
May 17 Javascript
在 Angular6 中使用 HTTP 请求服务端数据的步骤详解
Aug 06 Javascript
重学 JS:为啥 await 不能用在 forEach 中详解
Apr 15 Javascript
Vue.js轮播图走马灯代码实例(全)
May 08 Javascript
vue中npm包全局安装和局部安装过程
Sep 03 Javascript
js仿360开机效果
Dec 26 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
PHP 时间转换Unix时间戳代码
2010/01/22 PHP
php中通过虚代理实现延迟加载的实现代码
2011/06/10 PHP
Sorting Array Values in PHP(数组排序)
2011/09/15 PHP
PHP中file_exists()判断中文文件名无效的解决方法
2014/11/12 PHP
10个简化PHP开发的工具
2014/12/25 PHP
PHP将进程作为守护进程的方法
2015/03/19 PHP
php中session_id()函数详细介绍,会话id生成过程及session id长度
2015/09/23 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
2017/09/17 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
Laravel 前端资源配置教程
2019/10/18 PHP
实现png图片和png背景透明(支持多浏览器)的方法
2009/09/08 Javascript
基于jQuery实现图片的前进与后退功能
2013/04/24 Javascript
推荐10 款 SVG 动画的 JavaScript 库
2015/03/24 Javascript
jquery制作图片时钟特效
2020/03/30 Javascript
javascript实现下拉提示选择框
2015/12/29 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
2020/12/22 Javascript
bootstrap布局中input输入框右侧图标点击功能
2016/05/16 Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
2016/12/20 Javascript
JS中cookie的使用及缺点讲解
2017/05/13 Javascript
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
Webstorm2016使用技巧(SVN插件使用)
2018/10/29 Javascript
JS实现的对象去重功能示例
2019/06/04 Javascript
[06:36]吞吞映像top1
2014/06/20 DOTA
几个提升Python运行效率的方法之间的对比
2015/04/03 Python
Python爬取国外天气预报网站的方法
2015/07/10 Python
python绘制简单折线图代码示例
2017/12/19 Python
Python装饰器原理与简单用法实例分析
2018/04/29 Python
python用post访问restful服务接口的方法
2018/12/07 Python
python 计算数据偏差和峰度的方法
2019/06/29 Python
python查看数据类型的方法
2019/10/12 Python
关于python scrapy中添加cookie踩坑记录
2020/11/17 Python
css3 按钮 利用css3实现超酷下载按钮
2013/03/18 HTML / CSS
斯凯奇新西兰官网:SKECHERS新西兰
2018/02/22 全球购物
法律顾问服务方案
2014/05/15 职场文书
学院党的群众路线教育实践活动第一阶段情况汇报
2014/10/25 职场文书
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python