layui实现下拉框三级联动


Posted in Javascript onJuly 26, 2019

项目需要用layui的三级联动,自己整理了一下,做个记录

1.表结构设计

CREATE TABLE `dt_area` (
 `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '区域主键',
 `area_name` varchar(16) DEFAULT NULL COMMENT '区域名称',
 `area_code` varchar(128) DEFAULT NULL COMMENT '区域代码',
 `area_short` varchar(32) DEFAULT NULL COMMENT '区域简称',
 `area_is_hot` varchar(1) DEFAULT NULL COMMENT '是否热门(0:否、1:是)',
 `area_sequence` int(11) DEFAULT NULL COMMENT '区域序列',
 `area_parent_id` int(11) DEFAULT NULL COMMENT '上级主键',
 `init_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '初始时间',
 PRIMARY KEY (`id`),
 KEY `parent_id` (`area_parent_id`) USING HASH
) ENGINE=InnoDB AUTO_INCREMENT=900001 DEFAULT CHARSET=utf8 COMMENT='区域字典';

2.mybatis xml

<select id="queryByParentId" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
 select
 <include refid="Base_Column_List" />
 from dt_area
 where area_parent_id = #{id,jdbcType=INTEGER}
</select>

根据上级主键查询

3.页面元素

<div class="layui-form-item">
  <label class="layui-form-label">地址</label>
  <div class="layui-input-inline">
   <select id="province" lay-filter="province" lay-verify="required" lay-search="">
     <option value="">请选择或搜索省</option>
   </select>
  </div>
  <div class="layui-input-inline">
   <select id="city" lay-filter="city" lay-verify="required" lay-search="">
     <option value="">请选择或搜索市</option>
   </select>
  </div>
  <div class="layui-input-inline">
   <select id="area" lay-filter="area" lay-verify="required" lay-search="">
     <option value="">请选择或搜索县/区</option>
   </select>
  </div>
 
  <div class="layui-input-inline" style="width: 45%;">
   <input class="layui-input" id="" lay-verify="required" placeholder="请输入详细地址:城镇+乡村+街道+门牌号码"></input>
  </div>
</div>

4.js

layui.use(['form','layer','jquery'],function(){
  var form = layui.form,
   layer = parent.layer === undefined ? layui.layer : parent.layer,
   $ = layui.jquery;
 
  var provinceText = "";
  var cityText = "";
  var areaText = "";
  //异步加载下拉框数据
  $.post(WEB_ROOT+"dtArea/queryByParentId",{"id":0},function (data) {
    if(!data.success){
      layer.msg(data.msg)
    }else{
      var $html = "";
      if(data.data != null) {
        $.each(data.data, function (index, item) {
          $html += "<option value='" + item.id + "'>" + item.areaName + "</option>";
        });
        $("#province").append($html);
        //append后必须从新渲染
        form.render('select');
      }
    }
 
  });
 
  //监听省下拉框
  form.on('select(province)', function(dataObj){
    //移除城市下拉框所有选项
    $("#city").empty();
    var cityHtml = '<option value="">请选择或搜索市</option>';
    $("#city").html(cityHtml);
    var areaHtml = '<option value="">请选择或搜索县/区</option>';
    $("#area").html(areaHtml);
    provinceText = $("#province").find("option:selected").text();
    var value = $("#province").val();
    //异步加载下拉框数据
    $.post(WEB_ROOT+"dtArea/queryByParentId",{"id":value},function (data) {
      if(!data.success){
        layer.msg(data.msg)
      }else{
        var $html = "";
        if(data.data != null) {
          $.each(data.data, function (index, item) {
            $html += "<option value='" + item.id + "'>" + item.areaName + "</option>";
          });
          $("#city").append($html);
          //append后必须从新渲染
          form.render('select');
        }
      }
 
    });
 
  });
 
  //监听市下拉框
  form.on('select(city)', function(dataObj){
    //移除县区下拉框所有选项
    $("#area").empty();
    var html = '<option value="">请选择或搜索县/区</option>';
    $("#area").html(html);
 
    cityText = $("#city").find("option:selected").text();
    var value = $("#city").val();
    //异步加载下拉框数据
    $.post(WEB_ROOT+"dtArea/queryByParentId",{"id":value},function (data) {
      if(!data.success){
        layer.msg(data.msg)
      }else{
        var $html = "";
        if(data.data != null) {
          $.each(data.data, function (index, item) {
            $html += "<option value='" + item.id + "'>" + item.areaName + "</option>";
          });
          $("#area").append($html);
          //append后必须从新渲染
          form.render('select');
        }
      }
 
    });
 
  });
 
  //监听县区下拉框
  form.on('select(area)', function(dataObj){
    areaText = $("#area").find("option:selected").text();
  });
});

5.页面效果 

layui实现下拉框三级联动

附上联动sql下载地址

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
Apr 01 Javascript
jQuery事件绑定.on()简要概述及应用
Feb 07 Javascript
jquery插件开发注意事项小结
Jun 04 Javascript
javaScript array(数组)使用字符串作为数组下标的方法
Nov 19 Javascript
Javascript基础教程之关键字和保留字汇总
Jan 18 Javascript
JavaScript获取当前日期是星期几的方法
Apr 06 Javascript
Bootstrap编写导航栏和登陆框
May 30 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
Sep 16 Javascript
Angular企业级开发——MVC之控制器详解
Feb 20 Javascript
解决vue keep-alive 数据更新的问题
Sep 21 Javascript
Vue+axios+WebApi+NPOI导出Excel文件实例方法
Jun 05 Javascript
解决vue-router的beforeRouteUpdate不能触发
Apr 14 Vue.js
layui添加动态菜单与选项卡
Jul 26 #Javascript
layer设置maxWidth及maxHeight解决方案
Jul 26 #Javascript
javascript中的闭包概念与用法实践分析
Jul 26 #Javascript
layui自定义插件citySelect实现省市区三级联动选择
Jul 26 #Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
Jul 26 #Javascript
jQuery-Citys省市区三级菜单联动插件使用详解
Jul 26 #jQuery
微信小程序—setTimeOut定时器的问题及解决
Jul 26 #Javascript
You might like
php 图像函数大举例(非原创)
2009/06/20 PHP
PHP MemCached 高级缓存应用代码
2010/08/05 PHP
phpexcel导入excel数据使用方法实例
2013/12/24 PHP
php对象在内存中的存在形式分析
2015/02/03 PHP
WordPress中对访客评论功能的一些优化方法
2015/11/24 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
Javascript 类与静态类的实现(续)
2010/04/02 Javascript
js 针对html DOM元素操作等经验累积
2014/03/11 Javascript
JS判断移动端访问设备并加载对应CSS样式
2014/06/13 Javascript
Node.js开发之访问Redis数据库教程
2015/01/14 Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
2016/05/21 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
javascript jquery对form元素的常见操作详解
2016/06/12 Javascript
JavaScript中Form表单技术汇总(推荐)
2016/06/26 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
微信小程序tabbar不显示解决办法
2017/06/08 Javascript
Angular5给组件本身的标签添加样式class的方法
2018/04/07 Javascript
JavaScript生成指定范围随机数和随机序列的方法
2018/05/05 Javascript
JavaScript Array对象使用方法解析
2019/09/24 Javascript
Python使用Beautiful Soup包编写爬虫时的一些关键点
2016/01/20 Python
python实现网页自动签到功能
2019/01/21 Python
Python整数对象实现原理详解
2019/07/01 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
2019/07/22 Python
Python实现基于socket的udp传输与接收功能详解
2019/11/15 Python
使用openCV去除文字中乱入的线条实例
2020/06/02 Python
Python爬取数据并实现可视化代码解析
2020/08/12 Python
Crucial英睿达法国官网:内存条及SSD固态硬盘升级
2018/07/13 全球购物
Kusmi茶美国官网:优质散叶茶和茶包
2019/10/13 全球购物
党政领导班子群众路线对照检查材料思想汇报
2014/09/27 职场文书
查摆问题整改措施范文
2014/10/11 职场文书
小学生禁毒教育心得体会
2016/01/15 职场文书
党员反邪教心得体会
2016/01/15 职场文书
详解使用 CSS prefers-* 规范提升网站的可访问性与健壮性
2021/05/25 HTML / CSS
Java spring单点登录系统
2021/09/04 Java/Android
教你部署vue项目到docker
2022/04/05 Vue.js
Java 多线程并发FutureTask
2022/06/28 Java/Android