Select2 三级联动

朱雀 2020-10-24 17:26 933阅读 0赞

- 效果图

这里写图片描述

- 插件

这里写图片描述

- jsp页面


  1. <link rel="stylesheet" type="text/css" href="static/plugins/Select2-v4.0.5/css/select2.min.css"> <style type="text/css"> .js-example-basic-single{ min-width: 180px; } .select2-container .select2-selection--single{ height:34px; border: 1px solid #ccc; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset; color: #555; } .select2-container--default .select2-selection--single .select2-selection__rendered{ line-height:34px;} .select2-container--default .select2-selection--single .select2-selection__arrow{ height:32px;} </style> <script type="text/javascript" src="static/plugins/jquery/jquery-1.12.4.js"></script> <script type="text/javascript" src="static/plugins/Select2-v4.0.5/js/select2.min.js"></script> <script type="text/javascript" src="static/plugins/Select2-v4.0.5/js/zh-CN.js"></script> <script type="text/javascript"> $(function(){ /* 三级联动 */ /* 省数据 */ var provinceData=${provinceData}; var $eventSelect2= $(".select2"); $(".select2-province").select2({ placeholder:"请选择省份", language: "zh-CN", data: provinceData }); $(".select2-city").select2({ placeholder:"请选择市", language: "zh-CN", disabled: true }); $(".select2-district").select2({ placeholder:"请选择区、县", language: "zh-CN", disabled: true }); $eventSelect2.on("select2:select", function (e) { var data = e.params.data; var id = data.id; if(id.slice(2)=="0000"){ $(".select2-city").prop("disabled", false); /* 重置 */ $(".select2-city").val(null).trigger('change'); $(".select2-district").val(null).trigger('change'); $(".select2-district").prop("disabled", true); getRegionList(2,id,".select2-city","请选择市"); }else if(id.slice(4)=="00"){ $(".select2-district").prop("disabled", false); /* 重置 */ $(".select2-district").val(null).trigger('change'); getRegionList(3,id,".select2-district","请选择区、县"); } console.log(data); }); /* 根据所选,获取下一级的列表(市数据、区县数据) */ function getRegionList(level,parentId,clazz,tips){ $.ajax({ url : '/region/list', type : "get", data : { "level":level,"parentId":parentId}, dataType: 'json', success : function(data) { /* 解决追加问题 */ $(clazz).html('<option selected="selected"></option>'); /* 生成新数据 */ $(clazz).select2({ placeholder: tips, language: "zh-CN", data:data }); } }); } }); </script> ---------------------------HTML---华丽的分割线------------------------------- <div class="form-group"> <label class="col-md-2 control-label">机构地址:</label> <div class="col-md-6"> <select class="select2 select2-province form-control" name="province" style="width: 32.8%"> <option selected="selected"></option> <c:forEach items="${provinceList }" var="item"> <option value="${item.province }" <c:if test="${item.province eq blcOrgan.province }">selected="selected"</c:if>>${item.province }</option> </c:forEach> </select> <select class="select2 select2-city form-control" name="city" style="width: 32.8%"> <option selected="selected"></option> </select> <select class="select2-district form-control" name="district" style="width: 32.8%"> <option selected="selected"></option> </select> </div> </div>

- controller层

  1. @GetMapping("/edit")
  2. public String toEdit(Model model) {
  3. List<Select2Results> regionList = RegionSrv.queryRegionList("1", null);
  4. String provinceData = JsonUtils.toFastJson(regionList);
  5. model.addAttribute("provinceData", provinceData);
  6. return "blc_organ_edit";
  7. }

ajax获取下级列表的controller

  1. @GetMapping("/list")
  2. @ResponseBody
  3. public List<Select2Results> list(String level, String parentId) {
  4. return RegionSrv.queryRegionList(level, parentId);
  5. }

- mapper.xml

  1. <select id="selectRegionList" resultType="com.snsoft.common.util.Select2Results">
  2. SELECT ID,NAME TEXT FROM
  3. <if test="level == 1">
  4. REGION_PROVINCE
  5. </if>
  6. <if test="level == 2">
  7. REGION_CITY WHERE PROVINCE_ID =#{parentId}
  8. </if>
  9. <if test="level == 3">
  10. REGION_DISTRICT WHERE CITY_ID =#{parentId}
  11. </if>
  12. </select>

- select2数据封装实体

  1. /** * select2 数据封装工具类 * * @Author : liuzy * @Date : 2018/07/25 08:40 */
  2. public class Select2Results implements Serializable {
  3. private static final long serialVersionUID = -686788093782502884L;
  4. private String id;
  5. private String text;
  6. private Boolean selected;
  7. private Boolean disabled;
  8. public String getId() {
  9. return id;
  10. }
  11. public void setId(String id) {
  12. this.id = id;
  13. }
  14. public String getText() {
  15. return text;
  16. }
  17. public void setText(String text) {
  18. this.text = text;
  19. }
  20. public Boolean getSelected() {
  21. return selected;
  22. }
  23. public void setSelected(Boolean selected) {
  24. this.selected = selected;
  25. }
  26. public Boolean getDisabled() {
  27. return disabled;
  28. }
  29. public void setDisabled(Boolean disabled) {
  30. this.disabled = disabled;
  31. }
  32. /** * 输出json串 * @Author : liuzy * @Date : 2018/07/25 08:43 */
  33. @Override
  34. public String toString() {
  35. return JSON.toJSONString(this);
  36. }
  37. }

* SQL

这里写图片描述
(据说:行政区划代码更新了2018-6-30,我用的旧的,所以就不上传sql文件了)

发表评论

表情:
评论列表 (有 0 条评论,933人围观)

还没有评论,来说两句吧...

相关阅读

    相关 三级联动

    .set设置:ctrl+alt+s; 2.文本框在设置border-box之前边框向内设置 3.行内标签不能设置上下的margin(span) 4.json为...

    相关 WebForm 三级联动

    三级联动 数据库根据父级代号条件写查询 返回list<>集合 方法一: 创建三个下拉列表: ※AutoPostBack:否发生自动回传到服务器的操作。如果把该属性设置为