基于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 相关文章推荐
SyntaxHighlighter代码加色使用方法
Sep 07 Javascript
javascript+iframe 实现无刷新载入整页的代码
Mar 17 Javascript
JS实现自定义简单网页软键盘效果代码
Nov 05 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
Nov 06 Javascript
jQuery插件Validate实现自定义表单验证
Jan 18 Javascript
php基于redis处理session的方法
Mar 14 Javascript
基于javascript编写简单日历
May 02 Javascript
实例讲解JavaScript中call、apply、bind方法的异同
Sep 13 Javascript
JS 调试中常见的报错问题解决方法
May 20 Javascript
JavaScript实现求最大公共子串的方法
Feb 03 Javascript
JS添加或删除HTML dom元素的方法实例分析
Mar 05 Javascript
vue cli3 配置proxy代理无效的解决
Oct 30 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设计模式 Bridge (桥接模式)
2011/06/26 PHP
PHP利用REFERER根居访问来地址进行页面跳转
2013/09/28 PHP
php修改指定文件后缀的方法
2014/09/11 PHP
php获取本机真实IP地址实例代码
2016/03/31 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
2016/12/07 PHP
PHP简单实现二维数组的矩阵转置操作示例
2017/11/24 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
2020/02/11 PHP
window.addeventjs事件驱动函数集合addEvent等
2008/02/19 Javascript
JavaScript继承方式实例
2010/10/29 Javascript
Jquery easyUI 更新行示例
2014/03/06 Javascript
javascript中一些奇葩的日期换算方法总结
2018/11/14 Javascript
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
Vue商品控件与购物车联动效果的实例代码
2019/07/21 Javascript
在Vue环境下利用worker运行interval计时器的步骤
2019/08/01 Javascript
详解Typescript 内置的模块导入兼容方式
2020/05/31 Javascript
ElementUI 修改默认样式的几种办法(小结)
2020/07/29 Javascript
JavaScript this关键字的深入详解
2021/01/14 Javascript
跟老齐学Python之变量和参数
2014/10/10 Python
基于python进行桶排序与基数排序的总结
2018/05/29 Python
浅谈Python中的bs4基础
2018/10/21 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
2019/01/05 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
2019/10/23 Python
PyCharm 在Windows的有用快捷键详解
2020/04/07 Python
详解Python IO口多路复用
2020/06/17 Python
CSS3 实现时间轴动画
2020/11/25 HTML / CSS
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?
2014/01/05 面试题
Java面试笔试题大全
2016/11/23 面试题
网络工程师的自我评价
2013/10/02 职场文书
计算机多媒体专业自荐信
2014/07/04 职场文书
个人事迹材料范文
2014/12/29 职场文书
商务邀请函
2015/01/30 职场文书
2016年教师寒假学习心得体会
2015/10/09 职场文书
2019下半年英语教师的教学工作计划(3篇)
2019/09/25 职场文书
Python用any()函数检查字符串中的字母以及如何使用all()函数
2022/04/14 Python
WIN10使用IIS部署ftp服务器详细教程
2022/08/05 Servers