chosen实现省市区三级联动


Posted in Javascript onAugust 16, 2018

本文实例为大家分享了chosen实现省市区三级联动的具体代码,供大家参考,具体内容如下

效果图:

chosen实现省市区三级联动

一、资源

1.1、css资源

<link href="../../css/plugins/chosen/chosen.css" rel="stylesheet">

1.2、js资源

<script src="../../js/plugins/chosen/chosen.jquery.js"></script>

二、代码

<div class="row">
  <div class="form-group col-sm-2">
  <div class="input-group">
   <select data-placeholder="选择省份..." id="province" class="province-chosen-select" tabindex="1">
   <option value="">请选择省份</option>
   <#if provinceList?? && provinceList?size gt 0>
   <#list provinceList as province>
   <option value="${province.provinceId!}" >${province.name!}</option>
  </#list>
  </#if>
  </select>
  </div>
  </div>
  <div class="form-group col-sm-2" style="margin-left: 36px;">
  <div class="input-group">
  <select data-placeholder="选择城市..." id="city" class="city-chosen-select" tabindex="2">
  <option value="">请选择城市</option>
   </select>
  </div>
 </div>
 <div class="form-group col-sm-2" style="margin-left: 36px;">
  <div class="input-group">
   <select data-placeholder="选择区县..." class="area-chosen-select" id="area" tabindex="3">
   <option value="">请选择区县</option>
  </select>
  </div>
 </div>
</div>

三、javascript代码

<script type="text/javascript">
 $(function(){
  $('.province-chosen-select').chosen({
   disable_search_threshold: 10,
   no_results_text: '没有找到',//没有搜索到匹配项时显示的文字
   width: '240px',
   disable_search:false, // 设置为 true 隐藏单选框的搜索框
   disable_search_threshold:0 //少于 n 项时隐藏搜索框
  });
  $('.city-chosen-select').chosen({
   disable_search_threshold: 10,
   no_results_text: '没有找到',//没有搜索到匹配项时显示的文字
   width: '240px',
   disable_search:false, // 设置为 true 隐藏单选框的搜索框
   disable_search_threshold:0 //少于 n 项时隐藏搜索框
  });
  $('.area-chosen-select').chosen({
   disable_search_threshold: 10,
   no_results_text: '没有找到',//没有搜索到匹配项时显示的文字
   width: '240px',
   disable_search:false, // 设置为 true 隐藏单选框的搜索框
   disable_search_threshold:0 //少于 n 项时隐藏搜索框
  });
  
 })
 //Chosen 触发标准的 change 事件,同时会传递 selected or deselected 参数, 方便用户获取改变的选项
 $('.province-chosen-select').on('change', function(e, params) {
  findCitiesByProvince(e, params);
  });
 $('.city-chosen-select').on('change', function(e, params) {
  findAreasByCity(e, params);
  });
 
 function findCitiesByProvince(e, params) {
  var provinceId = params.selected;
  $.post("/common/find_cities_by_province", {
  "provinceId":provinceId
  }, function(data){
   $('#city option:first').nextAll().remove();
   $('#area option:first').nextAll().remove();
   var html = '';
   for (var i = 0; i < data.length; i++) {
   html+='<option value="'+data[i].cityId+'" hassubinfo="true">'+data[i].name+'</option>'
   }
   $("#city").append(html);
   //通过 JS 改变 select 元素选项时应该触发此事件,以更新 Chosen 生成的选框
   $('.city-chosen-select').trigger('chosen:updated');
   $('.area-chosen-select').trigger('chosen:updated');
  })
 }
 function findAreasByCity(e, params) {
  var cityId = params.selected;
  $.post("/common/find_areas_by_city", {
  "cityId":cityId
  }, function(data){
   $('#area option:first').nextAll().remove();
   var html = '';
   for (var i = 0; i < data.length; i++) {
   html+='<option value="'+data[i].areaId+'" hassubinfo="true">'+data[i].name+'</option>'
   }
   $("#area").append(html);
   //通过 JS 改变 select 元素选项时应该触发此事件,以更新 Chosen 生成的选框
   $('.area-chosen-select').trigger('chosen:updated');
  })
 }
 function submitBtn() {
  $("#result_div").html('');
  var provinceId = $("#province").val();
  var provinceName = $("#province option:selected").text();
  var cityId = $("#city").val();
  var cityName = $("#city option:selected").text();
  var areaId = $("#area").val();
  var areaName = $("#area option:selected").text();
  $("#result_div").append("provinceId="+provinceId+"<br>")
  .append("provinceName="+provinceName+"<br>")
  .append("cityId="+cityId+"<br>")
  .append("cityName="+cityName+"<br>")
  .append("areaId="+areaId+"<br>")
  .append("areaName="+areaName+"<br>");
 }
 </script>

四、java代码

/**
 *
 * @Title: findCitiesByProvince
 * @Description: 根据省份获取城市列表
 * @author: 大都督
 * @param provinceId
 * @return
 * @return: MessageInfo
 */
 @RequestMapping("/find_cities_by_province")
 @ResponseBody
 public List<City> findCitiesByProvince(String provinceId) {
  Assert.hasText(provinceId, StringText.provinceId_must);
  return cityDao.findByProvinceId(provinceId);
 }
 /**
 *
 * @Title: findAreasByCity
 * @Description: 根据城市获取区县列表
 * @author: 大都督
 * @param cityId
 * @return
 * @return: List<City>
 */
 @RequestMapping("/find_areas_by_city")
 @ResponseBody
 public List<Area> findAreasByCity(String cityId) {
  Assert.hasText(cityId, StringText.cityId_must);
  return areaDao.findByCity(cityId);
 }

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery 确定css方框模型(盒模型Box Model)
Jan 22 Javascript
jquery实现动态画圆
Dec 04 Javascript
详解JavaScript的变量和数据类型
Nov 27 Javascript
jQuery改变form表单的action,并进行提交的实现代码
May 25 Javascript
JQuery的attr 与 val区别
Jun 12 Javascript
Javascript 事件冒泡机制详细介绍
Oct 10 Javascript
Javascript vue.js表格分页,ajax异步加载数据
Oct 24 Javascript
基于vue实现swipe分页组件实例
May 25 Javascript
Angular2.js实现表单验证详解
Jun 23 Javascript
微信小程序自定义底部弹出框
Nov 16 Javascript
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
Nov 21 Javascript
原生javascript制作贪吃蛇小游戏的方法分析
Feb 26 Javascript
webuploader实现上传图片到服务器功能
Aug 16 #Javascript
Vue+webpack+Element 兼容问题总结(小结)
Aug 16 #Javascript
Vue 与 Vuex 的第一次接触遇到的坑
Aug 16 #Javascript
深入理解Vue 组件之间传值
Aug 16 #Javascript
JS加密插件CryptoJS实现的Base64加密示例
Aug 16 #Javascript
vue中引用swiper轮播插件的教程详解
Aug 16 #Javascript
JS加密插件CryptoJS实现的DES加密示例
Aug 16 #Javascript
You might like
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
2011/05/04 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
2020/04/05 PHP
Laravel5权限管理方法详解
2016/07/26 PHP
JavaScript函数、方法、对象代码
2008/10/29 Javascript
JavaScript入门教程(5) js Screen屏幕对象
2009/01/31 Javascript
js实现select跳转功能代码
2014/10/22 Javascript
js实现网站最上边可关闭的浮动广告条代码
2015/09/04 Javascript
简单谈谈javascript Date类型
2015/09/06 Javascript
深入解析JavaScript的闭包机制
2015/10/20 Javascript
js拼接html字符串的注意事项
2016/10/13 Javascript
JS创建对象的写法示例
2016/11/04 Javascript
基于Javascript实现的不重复ID的生成器
2016/12/25 Javascript
搭建element-ui的Vue前端工程操作实例
2018/02/23 Javascript
jQuery实现轮播图效果demo
2020/01/11 jQuery
vue cli3适配所有端方案的实现
2020/04/13 Javascript
jdk1.8+vue elementui实现多级菜单功能
2020/09/24 Javascript
Python中条件选择和循环语句使用方法介绍
2013/03/13 Python
Linux RedHat下安装Python2.7开发环境
2017/05/20 Python
python使用正则表达式替换匹配成功的组
2017/11/17 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
2019/08/20 Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
2019/10/12 Python
OpenCV模板匹配matchTemplate的实现
2019/10/18 Python
Python 装饰器原理、定义与用法详解
2019/12/07 Python
python给图像加上mask,并提取mask区域实例
2020/01/19 Python
Python timer定时器两种常用方法解析
2020/01/20 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
2020/04/13 Python
信息技术专业大学生个人的自我评价
2013/10/05 职场文书
年终自我鉴定
2013/10/09 职场文书
宿舍卫生检讨书
2014/01/16 职场文书
黄河的主人教学反思
2014/02/07 职场文书
2014道德模范事迹材料
2014/02/16 职场文书
酒店采购员岗位职责
2014/03/14 职场文书
小区文明倡议书
2014/05/16 职场文书
党员个人查摆剖析材料
2014/10/16 职场文书
2014年大堂经理工作总结
2014/11/21 职场文书
中学教师个人总结
2015/02/10 职场文书