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 相关文章推荐
各浏览器中querySelector和querySelectorAll的实现差异分析
May 23 Javascript
JavaScript初学者应注意的七个细节详细介绍
Dec 27 Javascript
js实现图片和链接文字同步切换特效的方法
Feb 20 Javascript
js点击文本框弹出可选择的checkbox复选框
Feb 03 Javascript
javascript 数组的正态分布排序的问题
Jul 31 Javascript
JS添加或修改控件的样式(Class)实现方法
Oct 15 Javascript
完美解决spring websocket自动断开连接再创建引发的问题
Mar 02 Javascript
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
May 27 Javascript
vue使用 better-scroll的参数和方法详解
Jan 25 Javascript
vue-swiper的使用教程
Aug 30 Javascript
如何检查一个对象是否为空
Apr 11 Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
May 12 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
Protoss建筑一览
2020/03/14 星际争霸
Terran兵种对照表
2020/03/14 星际争霸
php+jQuery.uploadify实现文件上传教程
2014/12/26 PHP
Yii框架通过请求组件处理get,post请求的方法分析
2019/09/03 PHP
PHP生成图表pChart的示例解析
2020/07/31 PHP
jquery简单体验
2007/01/10 Javascript
用javascript实现给图片加链接
2007/08/15 Javascript
Mootools 1.2教程 同时进行多个形变动画
2009/09/15 Javascript
学习ExtJS border布局
2009/10/08 Javascript
js获取电脑分辨率的思路及操作
2013/11/22 Javascript
为什么JS中eval处理JSON数据要加括号
2015/04/13 Javascript
jquery实现图片水平滚动效果代码分享
2015/08/26 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
2016/03/22 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
2016/07/01 Javascript
深入理解bootstrap框架之第二章整体架构
2016/10/09 Javascript
js模式化窗口问题![window.dialogArguments]
2016/10/30 Javascript
JS排序之冒泡排序详解
2017/04/08 Javascript
easyui-datagrid开发实践(总结)
2017/08/02 Javascript
[13:18]《一刀刀一天》之DOTA全时刻21:详解TI新赛制 A队再露獠牙
2014/06/24 DOTA
numpy中实现ndarray数组返回符合特定条件的索引方法
2018/04/17 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
2019/06/10 Python
Python OpenCV实现测量图片物体宽度
2020/05/27 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
2020/06/05 Python
将tf.batch_matmul替换成tf.matmul的实现
2020/06/18 Python
python实现简单猜单词游戏
2020/12/24 Python
使用HTML5里的classList操作CSS类
2016/06/28 HTML / CSS
Zavvi荷兰:英国大型音像制品和图书游戏零售商
2018/03/22 全球购物
Contém1g官网:巴西彩妆品牌
2020/01/17 全球购物
阿尔卡特(中国)的面试题目
2014/08/20 面试题
机修工工作职责
2014/02/21 职场文书
财务管理专业求职信
2014/06/11 职场文书
政治学专业毕业生求职信
2014/08/11 职场文书
前台岗位职责范本
2015/04/16 职场文书
2015年高校辅导员工作总结
2015/04/20 职场文书
Python matplotlib可视化之绘制韦恩图
2022/02/24 Python
试用1103暨1103、1101同门大比武 [ DAIWEI ]
2022/04/05 无线电