JQuery打造省市下拉框联动效果


Posted in Javascript onMay 18, 2014

做联动效果,若是用纯JavaScript来做,往往需要辅助页面保存需要刷新的结果集,然后渲染到原页面。考虑将需要动态刷新的内容自动拼接到前一个下拉框之后,当前一个下拉框onchange后,同级的后面的下拉框全部清除,然后重新拼接刷新的内容。用JQuery实现比较容易,代码以省市联动效果为例实现。

JSP页面代码如下:

<li id="base"> 
<p>生源地:</p> 
<label> 
<select id="provinceCode" name="provinceCode" onchange="refreshCity()"> 
<option value="">全部</option> 
<c:forEach items="${provinceInfoList}" var="provinceInfo"> 
<option value="${provinceInfo.code}">${provinceInfo.provinceName}</option> 
</c:forEach> 
</select> 
</label> 
</li>

JavaScript代码如下:
function refreshCity(){ 
if($('#provinceCode').find('option:selected').val() == ""){ 
$('#provinceCode').parent().nextAll('lable').remove(); 
return; 
} 
//省份名称 
var provinceName = $('#provinceCode').find('option:selected').text(); 
provinceName = provinceName.substring(0,provinceName.length-4); 
// 发出Json请求,查询子下拉框选项数据 
$.getJSON("<%=basePath%>baseInfo_getCitiesByProvinceId", { 
proviceCode : $('#provinceCode').val() 
}, function(data) { 
// 如果有子选项,则创建子下拉框 
if(data != null){ 
// 删除下拉框父级<lable>后的所有同级<lable> 
$('#provinceCode').parent().nextAll('lable').remove(); 
var childId = "city"; 
// 判断是否存在下一级下拉框 不存在就创建 
if($('#'+childId).length == 0){ 
// 创建一个<li>并创建一个<select>添加到id为extra的<ul>中 
$("<lable><select id='"+childId+"' name='"+childId+"' ></select></li>").appendTo($('#base')); 
}else{ 
//清空子下拉框内容 
$('#' + childId).empty(); 
} 
// 遍历json串,填充子下拉框 
$.each(data.city, function(i, item) { 
$('#' + childId).append( 
"<option value='"+item.code+"'>" + item.nameAndCode 
+ "</option>"); 
}); 
} 
}); 
}

根据省份获取市的代码如下:
public void getCitiesByProvinceCode(String proviceCode, HttpServletResponse response) throws JsonParseException, JsonMappingException, JSONException, IOException{ 
ProvinceInfo provinceInfo = this.provinceAndCityInfoService.getProvinceInfoByProperty("code", proviceCode); 
List<CityInfo> cityList = this.provinceAndCityInfoService.getCityListByProperty("belongProvinceId", provinceInfo.getId()+""); 
// 初始化准备输出的Json串 
String cityJson = ""; 
// 遍历集合,构造json串 
if (cityList.size() > 0) { 
cityJson = "{\"city\":["; 
// 拼接查询到的子项 
for (int i = 0; i < cityList.size(); i++) { 
CityInfo city = cityList.get(i); 
String temp = "{\"code\":\"" + city.getCode() 
+ "\",\"nameAndCode\":\"" + city.getName()+"("+ city.getCode() +")" 
+ "\"}"; 
// 如果是集合中最后一项,则拼接结束符,否则用","隔开 
if (i == cityList.size() - 1) { 
cityJson = cityJson + temp + "]}"; 
} else { 
cityJson = cityJson + temp + ","; 
} 
} 
} 
// 设置输出的字符集和类型并输出json串 
response.setCharacterEncoding("UTF-8"); 
response.setContentType("json"); 
response.getWriter().print(cityJson); 
}
Javascript 相关文章推荐
用YUI做了个标签浏览效果
Feb 20 Javascript
javascript 清除输入框中的数据
Apr 13 Javascript
jQuery实现多级下拉菜单jDropMenu的方法
Aug 28 Javascript
js基础知识(公有方法、私有方法、特权方法)
Nov 06 Javascript
AngularJS在IE下取数据总是缓存问题的解决方法
Aug 05 Javascript
JS实现类似百叶窗下拉菜单效果
Dec 30 Javascript
vue-loader教程介绍
Jun 14 Javascript
Node.js  事件循环详解及实例
Aug 06 Javascript
关于Vue背景图打包之后访问路径错误问题的解决
Nov 03 Javascript
react redux入门示例
Apr 19 Javascript
Vue数据绑定简析小结
May 07 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
Feb 12 Javascript
通过$(this)使用jQuery包装后的方法或属性
May 18 #Javascript
用jquery实现的一个超级简单的下拉菜单
May 18 #Javascript
Jquery 返回json数据在IE浏览器中提示下载的问题
May 18 #Javascript
绑定回车enter事件代码
May 18 #Javascript
javascript的alert box在java中如何显示多行
May 18 #Javascript
JSON+HTML实现国家省市联动选择效果
May 18 #Javascript
让alert不出现弹窗的两种方法
May 18 #Javascript
You might like
PHP实现事件机制实例分析
2015/06/26 PHP
PHP7 弃用功能
2021/03/09 PHP
JavaScript网页制作特殊效果用随机数
2007/05/22 Javascript
jQuery中parents()方法用法实例
2015/01/07 Javascript
通过node-mysql搭建Windows+Node.js+MySQL环境的教程
2016/03/01 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
2016/07/14 Javascript
浅谈javascript中的Function和Arguments
2016/08/30 Javascript
AngularJS中一般函数参数传递用法分析
2016/11/22 Javascript
vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)
2017/04/22 Javascript
vue实现多个元素或多个组件之间动画效果
2018/09/25 Javascript
小程序使用watch监听数据变化的方法详解
2019/09/20 Javascript
JS实现打砖块游戏
2020/02/14 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
2020/03/10 Javascript
Python加pyGame实现的简单拼图游戏实例
2015/05/15 Python
Python基于Tkinter实现的记事本实例
2015/06/17 Python
Python及Django框架生成二维码的方法分析
2018/01/31 Python
python调用摄像头拍摄数据集
2019/06/01 Python
python破解bilibili滑动验证码登录功能
2019/09/11 Python
Python爬虫基于lxml解决数据编码乱码问题
2020/07/31 Python
Django框架安装及项目创建过程解析
2020/09/14 Python
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
英国最大的电脑零售连锁店集团:PC World
2016/10/10 全球购物
荷兰包包购物网站:The Little Green Bag
2018/03/17 全球购物
德国自行车商店:Tretwerk
2019/06/21 全球购物
巴西Bo.Bô官方在线商店:经营奢侈品时尚业务
2020/03/16 全球购物
2014年两会学习心得体会
2014/03/10 职场文书
考察现实表现材料
2014/05/19 职场文书
大班亲子运动会方案
2014/06/10 职场文书
2015年教育实习工作总结
2015/04/24 职场文书
廉政承诺书范文
2015/04/28 职场文书
写给女朋友的检讨书
2015/05/06 职场文书
同步小康驻村工作简报
2015/07/20 职场文书
2015小学新教师个人工作总结
2015/10/14 职场文书
慰问信的写作格式及范文!
2019/06/24 职场文书
sql中mod()函数取余数的用法
2021/05/29 SQL Server
win10识别不了U盘怎么办 win10系统读取U盘失败的解决办法
2022/08/05 数码科技