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 相关文章推荐
js 代码集(学习js的朋友可以看下)
Jul 22 Javascript
JavaScript具有类似Lambda表达式编程能力的代码(改进版)
Sep 14 Javascript
js网页滚动条滚动事件实例分析
May 05 Javascript
基于JS实现的倒计时程序实例
Jul 24 Javascript
JS 清除字符串数组中,重复元素的实现方法
May 24 Javascript
AngularJS ng-controller 指令简单实例
Aug 01 Javascript
关于TypeScript模块导入的那些事
Jun 12 Javascript
一文快速详解前端框架 Vue 最强大的功能
May 21 Javascript
使用Vue.observable()进行状态管理的实例代码详解
May 26 Javascript
vue点击当前路由高亮小案例
Sep 26 Javascript
vue实现页面切换滑动效果
Jun 29 Javascript
基于VUE实现判断设备是PC还是移动端
Jul 03 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 Rename 更改文件、文件夹名称
2011/05/24 PHP
php session实现多级目录存放实现代码
2016/02/03 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
2017/05/02 PHP
JavaScript调用Activex控件的事件的实现方法
2010/04/11 Javascript
jquery中选择块并改变属性值的方法
2013/07/31 Javascript
JavaScrip实现PHP print_r的数功能(三种方法)
2013/11/12 Javascript
javascript搜索框效果实现方法
2015/05/14 Javascript
Bootstrap的图片轮播示例代码
2015/08/31 Javascript
详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
2015/10/01 Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
2016/09/12 Javascript
Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案
2016/09/15 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
2016/10/11 Javascript
webstorm添加vue.js支持的方法教程
2017/07/05 Javascript
JavaScript设计模式之代理模式简单实例教程
2018/07/03 Javascript
js正则表达式校验指定字符串的方法
2018/07/23 Javascript
代码整洁之道(重构)
2018/10/25 Javascript
JsonProperty 的使用方法详解
2019/10/11 Javascript
简单的编程0基础下Python入门指引
2015/04/01 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
2019/08/20 Python
Flask框架路由和视图用法实例分析
2019/11/07 Python
对tensorflow中cifar-10文档的Read操作详解
2020/02/10 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
2020/02/11 Python
tensorflow之tf.record实现存浮点数数组
2020/02/17 Python
OpenCV图片漫画效果的实现示例
2020/08/18 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
英国泰坦旅游网站:全球陪同游览,邮轮和铁路旅行
2016/11/29 全球购物
新加坡最受追捧的体验平台:Hapz
2018/01/01 全球购物
大学生个人事迹材料
2014/01/21 职场文书
挂职自我鉴定
2014/02/26 职场文书
2014年村官工作总结
2014/11/24 职场文书
社区敬老月活动总结
2015/05/07 职场文书
项目验收申请报告
2015/05/15 职场文书
法人代表证明书范本
2015/06/18 职场文书
解决Jupyter-notebook不弹出默认浏览器的问题
2021/03/30 Python
浅谈Python numpy创建空数组的问题
2021/05/25 Python
Unity连接MySQL并读取表格数据的实现代码
2021/06/20 MySQL