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 相关文章推荐
php结合imgareaselect实现图片裁剪
Jul 05 Javascript
jQuery.deferred对象使用详解
Mar 18 Javascript
Bootstrap教程JS插件滚动监听学习笔记分享
May 18 Javascript
jQuery实现的tab标签切换效果示例
Sep 05 Javascript
通过BootStrap实现轮播图的实际应用
Sep 26 Javascript
JavaScript函数基础详解
Feb 03 Javascript
简单谈谈关于 npm 5.0 的新坑
Jun 08 Javascript
解析Vue2 dist 目录下各个文件的区别
Nov 22 Javascript
JSONP原理及应用实例详解
Sep 13 Javascript
js获取form表单中name属性的值
Feb 27 Javascript
node.js express捕获全局异常的三种方法实例分析
Dec 27 Javascript
原生js实现九宫格拖拽换位
Jan 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文件下载类
2006/12/06 PHP
ThinkPHP中的关联模型注意点
2014/06/16 PHP
Parse正式发布开源PHP SDK
2014/08/11 PHP
Yii使用技巧大汇总
2015/12/29 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
2018/07/17 PHP
在IE下:float属性会影响offsetTop的取值
2006/12/22 Javascript
javascript下给元素添加事件的方法与代码
2007/08/13 Javascript
表单切换,用回车键替换Tab健(不支持IE)
2011/07/20 Javascript
Javascript的数组与字典用法与遍历对象的属性技巧
2012/11/07 Javascript
jquery实现智能感知连接外网搜索
2013/05/21 Javascript
jquery实现的鼠标拖动排序Li或Table
2014/05/04 Javascript
jquery实现html页面 div 假分页有原理有代码
2014/09/06 Javascript
javascript实现日期按月份加减
2015/05/15 Javascript
jquery自定义右键菜单、全选、不连续选择
2016/03/01 Javascript
JS组件Bootstrap Table使用实例分享
2016/05/30 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
2016/10/19 Javascript
jquery插件ContextMenu设置右键菜单
2017/03/13 Javascript
用node和express连接mysql实现登录注册的实现代码
2017/07/05 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
2017/07/24 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
Element 默认勾选表格 toggleRowSelection的实现
2019/09/04 Javascript
vue中h5端打开app(判断是安卓还是苹果)
2021/02/26 Vue.js
haskell实现多线程服务器实例代码
2013/11/26 Python
Python中列表(list)操作方法汇总
2014/08/18 Python
浅谈python下含中文字符串正则表达式的编码问题
2018/12/07 Python
python 产生token及token验证的方法
2018/12/26 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
2020/03/23 Python
python 监控logcat关键字功能
2020/09/04 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
HTML5 预加载让页面得以快速呈现
2013/08/13 HTML / CSS
运输企业安全生产责任书
2014/07/28 职场文书
政风行风自查自纠报告
2014/10/21 职场文书
2015年度个人教学工作总结
2015/05/20 职场文书
导游词之绍兴柯岩古镇
2020/01/09 职场文书
面试提问mysql一张表到底能存多少数据
2022/03/13 MySQL