js实现一个省市区三级联动选择框代码分享


Posted in Javascript onMarch 06, 2013

运行效果:
js实现一个省市区三级联动选择框代码分享 
=================================================
部分代码:
=================================================
当然首先你数据库中要有这个table,不然你没有数据.....^_^

<tr> 
<td class="tr pr10 "> 
所在地: 
</td> 
<td class="tl"> 
<input type="hidden" id="myProvince" value="${user.provinceId}"/> 
<input type="hidden" id="myCity" value="${user.cityId}"/> 
<input type="hidden" id="myRegion" value="${user.regionId}"/> 
<select id="provinceSelect" name="user.provinceId"> 
<c:forEach items="${xzqhs}" var="xzqh"> 
<option value="${xzqh.provinceId}" ${user.regionId eq xzqh.provinceId?"selected='selected'":""}>${xzqh.province}</option> 
</c:forEach> 
</select> 
<select id="citySelect" name="user.cityId"> 
</select> 
<select id="regionSelect" name="user.regionId"> 
</select> 
</td> 
<td class="gray"></td> 
</tr>

js代码:
/** 
* 加载市 
* 
*/ 
function loadCity() { 
var provinceId = $("#provinceSelect option:selected").val(); 
if(provinceId == null || provinceId == ""){ 
//alert("找不到省"); 
}else{ 
$.post(rootPath+"/loadCity", { 
"q" : provinceId 
}, function(data, result) { 
if(data == "noId"){ 
alert("请求错误"); 
}else if(data == "null"){ 
alert("系统找不到属于该省的市"); 
}else{ 
data = eval("{" + data + "}"); 
var citySelect = $("#citySelect"); 
var myCity = $("#myCity").val(); 
citySelect.html(""); 
for ( var i = 0; i < data.length; i++) { 
if(myCity != null && myCity != "" && myCity > 0 && myCity == data[i].id){ 
citySelect.append("<option selected='selected' value='" + data[i].id + "'>" 
+ data[i].name + "</option>"); 
}else{ 
citySelect.append("<option value='" + data[i].id + "'>" 
+ data[i].name + "</option>"); 
} 
} 
loadRegion(); 
} 
}); 
} 
}; 
/** 
* 加载区 
* 
*/ 
function loadRegion() { 
var cityId = $("#citySelect option:selected").val(); 
if(cityId == null || cityId == "" || cityId < 1){ 
alert("找不到市"); 
}else{ 
$.post(rootPath+"/loadRegion", { 
"q" : cityId 
}, function(data, result) { 
if(data == "noId"){ 
alert("请求错误"); 
}else if(data == "null"){ 
alert("系统找不到属于该市的区"); 
}else{ 
data = eval("{" + data + "}"); 
var regionSelect = $("#regionSelect"); 
var myRegion = $("#myRegion").val(); 
regionSelect.html(""); 
for ( var i = 0; i < data.length; i++) { 
if(myRegion != null && myRegion != "" && myRegion > 0 && myRegion == data[i].id){ 
regionSelect.append("<option selected='selected' value='" + data[i].id + "'>" 
+ data[i].name + "</option>"); 
}else{ 
regionSelect.append("<option value='" + data[i].id + "'>" 
+ data[i].name + "</option>"); 
} 
} 
} 
}); 
} 
}; 
/** 
* 省改变事件 
* 
*/ 
$("#provinceSelect").change(loadCity); 
/** 
* 市改变事件 
* 
*/ 
$("#citySelect").change(loadRegion); $(function() { 
loadCity(); 
});

后台方法:
/** 
* 加载城市数据 
* 
*/ 
public void loadCity() { 
if (q == null || q.trim().equals("")) { 
write("noId"); 
} else { 
List<Xzqh> citys = xzqhService.queryCitys(q.trim()); 
if (citys == null || citys.size() < 1) { 
write("null"); 
} else { 
StringBuilder builder = new StringBuilder("["); 
for (Xzqh city : citys) { 
builder.append("{'id':'"); 
builder.append(city.getCityId()); 
builder.append("','name':'"); 
builder.append(city.getCity()); 
builder.append("'},"); 
} 
if (builder.length() > 1) 
builder.replace(builder.length() - 1, builder.length(), "]"); 
write(builder.toString()); 
} 
} 
} 
/** 
* 加载区数据 
* 
*/ 
public void loadRegion() { 
if (q == null || q.trim().equals("")) { 
write("noId"); 
} else { 
List<Xzqh> citys = xzqhService.queryDistricts(q.trim()); 
if (citys == null || citys.size() < 1) { 
write("null"); 
} else { 
StringBuilder builder = new StringBuilder("["); 
for (Xzqh district : citys) { 
builder.append("{'id':'"); 
builder.append(district.getRegionId()); 
builder.append("','name':'"); 
builder.append(district.getRegion()); 
builder.append("'},"); 
} 
if (builder.length() > 1) 
builder.replace(builder.length() - 1, builder.length(), "]"); 
write(builder.toString()); 
} 
} 
}
Javascript 相关文章推荐
学习YUI.Ext 第六天--关于树TreePanel(Part 2异步获取节点)
Mar 10 Javascript
js实现接收表单的值并将值拼在表单action后面的方法
Nov 23 Javascript
javascript新闻跑马灯实例代码
Jul 29 Javascript
Javascript操作表单实例讲解(下)
Jun 20 Javascript
利用原生JS自动生成文章标题树的实例
Aug 22 Javascript
详解基于webpack和vue.js搭建开发环境
Apr 05 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
Jun 01 Javascript
node下使用UglifyJS压缩合并JS文件的方法
Mar 07 Javascript
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
Aug 13 Javascript
jquery插件实现轮播图效果
Oct 19 jQuery
angular *Ngif else用法详解
Dec 15 Javascript
Javascript实现打鼓效果
Jan 29 Javascript
自己写了一个展开和收起的多更能型的js效果
Mar 05 #Javascript
js获取RadioButtonList的Value/Text及选中值等信息实现代码
Mar 05 #Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
Mar 05 #Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
Mar 05 #Javascript
根据经纬度计算地球上两点之间的距离js实现代码
Mar 05 #Javascript
js日期时间补零的小例子
Mar 05 #Javascript
6款新颖的jQuery和CSS3进度条插件推荐
Mar 05 #Javascript
You might like
PHP新手上路(五)
2006/10/09 PHP
php 设计模式之 单例模式
2008/12/19 PHP
php使用ob_start()实现图片存入变量的方法
2014/11/14 PHP
列举PHP的Yii 2框架的开发优势
2015/07/03 PHP
PHP函数nl2br()与自定义函数nl2p()换行用法分析
2016/04/02 PHP
laravel框架中间件 except 和 only 的用法示例
2019/07/12 PHP
dojo 之基础篇(三)之向服务器发送数据
2007/03/24 Javascript
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
2007/04/12 Javascript
JS backgroundImage控制
2009/05/19 Javascript
artdialog的图片/标题以及关闭按钮不显示的解决方法
2013/06/27 Javascript
iframe父页面获取子页面参数的方法
2014/02/21 Javascript
js实现字符串转日期格式的方法
2015/05/20 Javascript
js+HTML5基于过滤器从摄像头中捕获视频的方法
2015/06/16 Javascript
详解JavaScript权威指南之对象
2016/09/27 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
浅谈JavaScript中promise的使用
2017/01/11 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
2018/08/01 Javascript
Vue使用NPM方式搭建项目
2018/10/25 Javascript
vue改变对象或数组时的刷新机制的方法总结
2019/04/24 Javascript
在Python中使用PIL模块处理图像的教程
2015/04/29 Python
python if not in 多条件判断代码
2016/09/21 Python
Python实现的rsa加密算法详解
2018/01/24 Python
jupyter notebook读取/导出文件/图片实例
2020/04/16 Python
用纯css3和html制作泡沫对话框实现代码
2013/03/21 HTML / CSS
草莓网化妆品日本站:Strawberrynet日本
2017/10/20 全球购物
世界闻名的衬衫制造商:Savile Row Company
2018/07/30 全球购物
创业计划书如何吸引他人眼球
2014/01/10 职场文书
畜牧兽医本科生的自我评价
2014/03/03 职场文书
运动会演讲稿
2014/05/07 职场文书
美食节策划方案
2014/05/26 职场文书
体育教师个人工作总结
2015/02/09 职场文书
建筑技术负责人岗位职责
2015/04/13 职场文书
评奖评优个人先进事迹材料
2015/11/04 职场文书
CSS中float高度塌陷问题的四种解决方案
2022/04/18 HTML / CSS
vue-cli3.x配置全局的scss的时候报错问题及解决
2022/04/30 Vue.js
一文了解Java动态代理的原理及实现
2022/07/07 Java/Android