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 相关文章推荐
在javascript中如何得到中英文混合字符串的长度
Jan 17 Javascript
页面按钮禁用与解除禁用的方法
Feb 19 Javascript
JS代码防止SQL注入的方法(超简单)
Apr 12 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
Nov 30 Javascript
javascript添加前置0(补零)的几种方法
Jan 05 Javascript
JS和canvas实现俄罗斯方块
Mar 14 Javascript
微信小程序request出现400的问题解决办法
May 23 Javascript
js构造函数创建对象是否加new问题
Jan 22 Javascript
基于JS实现带动画效果的流程进度条
Jun 01 Javascript
D3.js实现拓扑图的示例代码
Jun 30 Javascript
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
Mar 30 Javascript
微信小程序自定义顶部组件customHeader的示例代码
Jun 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 SPL标准库之SplFixedArray使用实例
2015/05/12 PHP
dojo 之基础篇
2007/03/24 Javascript
JavaScript 自动完成脚本整理(33个)
2009/10/20 Javascript
Riot.js 快速的JavaScript单元测试框架
2009/11/09 Javascript
dropdownlist之间的互相联动实现(显示与隐藏)
2009/11/24 Javascript
javascript jq 弹出层实例
2013/08/25 Javascript
js 控制页面跳转的5种方法
2013/09/09 Javascript
JavaScript验证图片类型(扩展名)的函数分享
2014/05/05 Javascript
js实现遮罩层弹出框的方法
2015/01/15 Javascript
深入理解JavaScript系列(49):Function模式(上篇)
2015/03/04 Javascript
jQuery实现列表的全选功能
2015/03/18 Javascript
最新最热最实用的15个jQuery插件汇总
2015/07/05 Javascript
详解vue表单验证组件 v-verify-plugin
2017/04/19 Javascript
基于JavaScript实现类名的添加与移除
2017/04/23 Javascript
JavaScript实现二叉树的先序、中序及后序遍历方法详解
2017/10/26 Javascript
node.js实现为PDF添加水印的示例代码
2018/12/05 Javascript
如何让微信小程序页面之间的通信不再变困难
2019/06/03 Javascript
深入理解 JS 垃圾回收
2019/06/03 Javascript
搭建一个nodejs脚手架的方法步骤
2019/06/28 NodeJs
countUp.js实现数字滚动效果
2019/10/18 Javascript
小程序实现图片预览裁剪插件
2019/11/22 Javascript
python实现获取序列中最小的几个元素
2014/09/25 Python
Python编程产生非均匀随机数的几种方法代码分享
2017/12/13 Python
教你一步步利用python实现贪吃蛇游戏
2019/06/27 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
python中的Elasticsearch操作汇总
2019/10/30 Python
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
电子信息专业自荐书
2014/02/04 职场文书
四风存在的原因分析
2014/02/11 职场文书
《小儿垂钓》教学反思
2014/02/23 职场文书
主题班会演讲稿
2014/05/22 职场文书
成品仓库管理员岗位职责
2015/04/09 职场文书
2015年教师党员承诺书
2015/04/27 职场文书
详解Python小数据池和代码块缓存机制
2021/04/07 Python
一篇文章带你学习Mybatis-Plus(新手入门)
2021/08/02 Java/Android
微前端qiankun改造日渐庞大的项目教程
2022/06/21 Javascript