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

 更新时间:2014年05月18日 17:11:18   作者:  
考虑将需要动态刷新的内容自动拼接到前一个下拉框之后等等,用JQuery实现比较容易,代码以省市联动效果为例实现
做联动效果,若是用纯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);
}

相关文章

  • JQuery FlexiGrid的asp.net完美解决方案 dotNetFlexGrid-.Net原生的异步表格控件

    JQuery FlexiGrid的asp.net完美解决方案 dotNetFlexGrid-.Net原生的异步表格控件

    dotNetFlexGrid是一款dotNet原生的异步表格控件,他的前身是Jquery FlexiGrid插件,我们重构了FlexiGrid的大部分Javascript代码,使其工作的更有效率,BUG更少;同时将其封装为dotNet控件,提供了简单易用的使用方式。
    2010-09-09
  • 使用JQuery自动完成插件Auto Complete详解

    使用JQuery自动完成插件Auto Complete详解

    这篇文章主要介绍了使用JQuery自动完成插件Auto Complete详解,使用JQuery自动完成插件,更新现有图书列表页面上的搜索,当用户键入的时候立即显示结果。,需要的朋友可以参考下
    2019-06-06
  • jQuery 调用WebService 实例讲解

    jQuery 调用WebService 实例讲解

    以前都是Web程序调用WebService,.net把WebService封装的太简单了,所以之前都是很肤浅的用,都没有想过更深层的东西,并且只是停留在表面的添加引用和调用。
    2016-06-06
  • jQuery实现简单的下拉菜单导航功能示例

    jQuery实现简单的下拉菜单导航功能示例

    这篇文章主要介绍了jQuery实现简单的下拉菜单导航功能,涉及jQuery针对页面元素的遍历与节点修改相关操作技巧,需要的朋友可以参考下
    2017-12-12
  • jQuery获得子元素个数的方法

    jQuery获得子元素个数的方法

    这篇文章主要介绍了jQuery获得子元素个数的方法,实例分析了jQuery中children()方法的使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • jQuery插件实现大图全屏图片相册

    jQuery插件实现大图全屏图片相册

    这篇文章主要介绍了jQuery插件实现大图全屏图片相册的方法和示例,基于jQuery插件jQuery.album.js来实现的,效果非常不错,这里推荐给大家,希望大家能够喜欢。
    2015-03-03
  • jQuery实现的网页左侧在线客服效果代码

    jQuery实现的网页左侧在线客服效果代码

    这篇文章主要介绍了jQuery实现的网页左侧在线客服效果代码,涉及简单的jQuery页面动画显示与隐藏效果实现技巧,非常具有实用价值,需要的朋友可以参考下
    2015-10-10
  • Jquery揭秘系列:ajax原生js实现详解(推荐)

    Jquery揭秘系列:ajax原生js实现详解(推荐)

    下面小编就为大家带来一篇Jquery揭秘系列:ajax原生js实现详解(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • jQuery打印图片pdf、txt示例代码

    jQuery打印图片pdf、txt示例代码

    本节主要介绍了jQuery打印图片pdf、txt,需要的朋友可以参考下
    2014-07-07
  • input输入框内容实时监测(附代码)

    input输入框内容实时监测(附代码)

    这篇文章主要介绍了如何实时监测input输入框内容,具体操作步骤大家可查看下文详细讲解,感兴趣的小伙伴们可以参考一下。
    2017-08-08

最新评论