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 相关文章推荐
JavaScript window.setTimeout() 的详细用法
Nov 04 Javascript
Lazy Load 延迟加载图片的 jQuery 插件
Feb 06 Javascript
javascript预加载图片、css、js的方法示例介绍
Oct 14 Javascript
iframe子父页面调用js函数示例
Nov 07 Javascript
JavaScript实现梯形乘法表的方法
Apr 25 Javascript
使用JavaScript脚本判断页面是否在微信中被打开
Mar 06 Javascript
网站发布后Bootstrap框架引用woff字体无法正常显示的解决方法
Nov 24 Javascript
JS实现旋转木马式图片轮播效果
Jan 18 Javascript
jQuery插件HighCharts绘制2D圆环图效果示例【附demo源码下载】
Mar 09 Javascript
JavaScript评论点赞功能的实现方法
Mar 13 Javascript
Angular 通过注入 $location 获取与修改当前页面URL的实例
May 31 Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
Nov 27 Javascript
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的ASP防火墙
2006/10/09 PHP
PHP中防止SQL注入实现代码
2011/02/19 PHP
thinkphp实现like模糊查询实例
2014/10/29 PHP
laravel 之 Eloquent 模型修改器和序列化示例
2019/10/17 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
2020/04/27 PHP
JS 实现点击a标签的时候让其背景更换
2013/10/15 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
2013/12/24 Javascript
Javascript中对象继承的实现小例
2014/05/12 Javascript
javascript获取checkbox复选框获取选中的选项
2014/08/12 Javascript
jQuery无刷新切换主题皮肤实例讲解
2015/10/21 Javascript
Node.js中使用socket创建私聊和公聊聊天室
2015/11/19 Javascript
Bootstrap实现弹性搜索框
2016/07/11 Javascript
Bootstrap文件上传组件之bootstrap fileinput
2016/11/25 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
小程序使用分包的示例代码
2020/03/23 Javascript
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
[15:20]DOTA2-DPC中国联赛 正赛 Elephant vs Aster 选手采访
2021/03/11 DOTA
Python实现的下载8000首儿歌的代码分享
2014/11/21 Python
Python获取运行目录与当前脚本目录的方法
2015/06/01 Python
Pandas 数据处理,数据清洗详解
2018/07/10 Python
详解django自定义中间件处理
2018/11/21 Python
python列表使用实现名字管理系统
2019/01/30 Python
Django ORM filter() 的运用详解
2020/05/14 Python
基于python代码批量处理图片resize
2020/06/04 Python
Python Pillow(PIL)库的用法详解
2020/09/19 Python
使用Python爬取Json数据的示例代码
2020/12/07 Python
详解用selenium来下载小姐姐图片并保存
2021/01/26 Python
Nike挪威官网:Nike.com (NO)
2018/11/26 全球购物
一个SQL面试题
2014/08/21 面试题
DIY蛋糕店的创业计划书范文
2013/12/26 职场文书
联谊活动策划书
2014/01/26 职场文书
学习“七一”讲话精神体会
2014/07/08 职场文书
应届生简历自我评价
2015/03/11 职场文书
2015年公务员个人工作总结
2015/04/24 职场文书
MySQL库表太大怎么办? 数据库分库分表项目实践
2022/04/11 MySQL