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
Nov 25 Javascript
关于Javascript 的 prototype问题。
Jan 03 Javascript
jQuery 源码分析笔记(3) Deferred机制
Jun 19 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
Jan 15 Javascript
jQuery中even选择器的定义和用法
Dec 23 Javascript
基于Javascript实现返回顶部按钮
Feb 29 Javascript
Javascript快速实现浏览器系统通知
Aug 26 Javascript
vue移动端项目缓存问题实践记录
Oct 29 Javascript
layui实现鼠标移动到单元格上显示数据的方法
Sep 11 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
Nov 04 Javascript
JS如何生成动态列表
Sep 22 Javascript
vue实现列表拖拽排序的功能
Nov 02 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
CodeIgniter生成网站sitemap地图的方法
2013/11/13 PHP
浅析PHP微信支付通知的处理方式
2014/05/25 PHP
实例详解PHP中html word 互转的方法
2016/01/28 PHP
阿里对象存储OSS在laravel框架中的使用方法
2019/10/13 PHP
Javascript实例教程(19) 使用HoTMetal(3)
2006/12/23 Javascript
jquery 表单取值常用代码
2009/12/22 Javascript
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
通过下拉框的值来确定输入框是否可以为空的代码
2011/10/18 Javascript
js解析与序列化json数据(二)序列化探讨
2013/02/01 Javascript
js+css实现增加表单可用性之提示文字
2013/06/03 Javascript
JavaScript输出当前时间Unix时间戳的方法
2015/04/06 Javascript
Javascript中的 “&amp;” 和 “|” 详解
2017/02/02 Javascript
详解Nodejs之静态资源处理
2017/06/05 NodeJs
js移动端事件基础及常用事件库详解
2017/08/15 Javascript
基于vue2.0实现简单轮播图
2017/11/27 Javascript
vue-cli点击实现全屏功能
2020/03/07 Javascript
如何解决jQuery 和其他JS库的冲突
2020/06/22 jQuery
gearman的安装启动及python API使用实例
2014/07/08 Python
python使用三角迭代计算圆周率PI的方法
2015/03/20 Python
python实现简单爬虫功能的示例
2016/10/24 Python
Python多线程扫描端口代码示例
2018/02/09 Python
Python + selenium自动化环境搭建的完整步骤
2018/05/19 Python
Django 使用Ajax进行前后台交互的示例讲解
2018/05/28 Python
详解Python实现进度条的4种方式
2020/01/15 Python
世界上最全面的汽车零部件和配件集合:JC Whitney
2016/09/04 全球购物
Electrolux伊莱克斯巴西商店:家用电器、小家电和配件
2018/05/23 全球购物
Dr.Jart+美国官网:韩国药妆品牌
2019/01/18 全球购物
阿迪达斯越南官网:adidas越南
2020/07/19 全球购物
什么是Assembly(程序集)
2014/09/14 面试题
工作建议书范文
2014/05/13 职场文书
旅游活动总结
2014/08/27 职场文书
结婚当天新郎保证书
2015/05/08 职场文书
2015社区个人工作总结范文
2015/05/13 职场文书
省级三好学生主要事迹材料
2015/11/03 职场文书
2016国庆节67周年红领巾广播稿
2015/12/18 职场文书
Python图像处理之图像拼接
2021/04/28 Python