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 相关文章推荐
多浏览器兼容的获取元素和鼠标的位置的js代码
Dec 15 Javascript
JavaScript 精粹读书笔记(1,2)
Feb 07 Javascript
JQuery小知识
Oct 15 Javascript
JS的replace方法介绍
Oct 20 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
Mar 13 Javascript
js简单实现标签云效果实例
Aug 06 Javascript
js 定位到某个锚点的方法
Nov 19 Javascript
利用Javascript实现简单的转盘抽奖
Feb 13 Javascript
canvas实现爱心和彩虹雨效果
Mar 09 Javascript
微信小程序 登录的简单实现
Apr 19 Javascript
JavaScript 禁止用户保存图片的实现代码
Apr 28 Javascript
Vue ElementUI实现:限制输入框只能输入正整数的问题
Jul 31 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
SONY ICF-SW55的电路分析
2021/03/02 无线电
服务器端解压缩zip的脚本
2006/12/22 PHP
dedecms系统常用术语汇总
2007/04/03 PHP
PHP实现获取文件mime类型多种方法解析
2020/05/28 PHP
用jquery实现的一个超级简单的下拉菜单
2014/05/18 Javascript
在浏览器中打开或关闭JavaScript的方法
2015/06/03 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
json对象与数组以及转换成js对象的简单实现方法
2016/06/24 Javascript
Bootstrap源码解读下拉菜单(4)
2016/12/23 Javascript
ES6概念 Symbol toString()方法
2016/12/25 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
微信小程序 this和that详解及简单实例
2017/02/13 Javascript
canvas绘图不清晰的解决方案
2017/02/28 Javascript
react路由配置方式详解
2017/08/07 Javascript
vue.js做一个简单的编辑菜谱功能
2018/05/08 Javascript
微信小程序云开发之数据库操作
2019/05/18 Javascript
Vue项目实现简单的权限控制管理功能
2019/07/17 Javascript
三剑客:offset、client和scroll还傻傻分不清?
2020/12/04 Javascript
python 运算符 供重载参考
2009/06/11 Python
在Linux系统上部署Apache+Python+Django+MySQL环境
2015/12/24 Python
python UNIX_TIMESTAMP时间处理方法分析
2016/04/18 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
python环形单链表的约瑟夫问题详解
2018/09/27 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
2020/06/09 Python
HTML5里autofocus自动聚焦属性使用介绍
2016/06/22 HTML / CSS
html5表单及新增的改良元素详解
2016/06/07 HTML / CSS
LN-CC英国:伦敦时尚生活的缩影
2019/09/01 全球购物
简述数组与指针的区别
2014/01/02 面试题
DOM和JQuery对象有什么区别
2016/11/11 面试题
大学生学习自我评价
2014/01/13 职场文书
小学生读书感言
2014/02/12 职场文书
2015选调生工作总结
2015/07/24 职场文书
大学班长竞选稿
2015/11/20 职场文书
2019森林防火宣传标语大全!
2019/07/03 职场文书
Python编解码问题及文本文件处理方法详解
2021/06/20 Python
Nginx如何限制IP访问只允许特定域名访问
2022/07/23 Servers