一篇文章彻底搞懂layui框架中的弹窗(layer)

Layui——一个非常好用的轻量级的免费Web UI组件库 Layui——一个非常好用的轻量级的免费WebUI组件库 阅读详情
AI摘要

本文详细介绍了layui前端框架中的弹窗组件layer的使用方法及配置选项,包括如何引入css和js文件,通过不同type类型的弹窗展示文本、HTML内容及iframe子页面,以及如何设置弹窗大小、回调函数和按钮等。

首先,还是那句话什么是弹窗,其实也就是个小弹出层 alert?

在这个年代,各位前端小哥哥小姐姐们,是不是用惯了element-ui、antD中的弹出层。
其实现在的话,接着就是谈谈layui这个2016年推出来的前端框架。

说到这里还是要谈谈的,因为其实在如今,layui中的很多组件,其实都已经不是那么的流行了,不过像layui中的很多组件写的还是非常非常牛掰的。
接下来的话其实就说说layui中的layer(其实也就是弹出层组件)
必不可少的还是要在页面中引入css样式以及js文件,这样的话我们才可以去使用layui
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200909080606506.png#pic_center

首先可以先做一个小案例

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>layer</title>
    <link rel="stylesheet" href="./layui/css/layui.css" />
    <script src="./layui/layui.js"></script>
  </head>
  <body>
    <div id="layerBtn" class="layui-btn">弹出layui按钮</div>
  </body>
</html>
<script>
  // 挂载layui,添加jquery和form 一会我们会用到
  layui.use(['layer', 'jquery', 'form'], function () {
    // 这个时候将挂载到layui中的layer放置到一个变量上面,有助于我们调用
    var layer = layui.layer
    var $ = layui.jquery
    var form = layui.form
    // 首先第一种调用方法就是(采用的是jquery的点击事件)
    $('#layerBtn').on('click', function (e) {
      // 调用的layer弹窗
      layer.msg('我调用了,我是layer弹窗')
    })
  })
</script>

在这里插入图片描述

其实layer中的msg也就是一个小提示吧算是。
当然我们真正运用到弹窗的话肯定要用到一些其他的功能,layui也在观望中给出了我们详细的配置。
像type、time、icon…
其实我们在这里的话主要就是来说一下弹窗的另一种打开方法

layer.open()这种方式来打开弹窗,open方法中参数为一堆options配置对象
我们可以大体的看一下open的配置项
type:弹出框类型(主要介绍三种)
type:0(简单的像弹出层内容放置的是文本)

      layer.open({
        type: 0,//type类型
        title:'文本'//弹窗标题
        content: '文本问二苯二而被本吧',//弹窗内容
      })

在这里插入图片描述
我们如果设置type类型是0的话,content内容展示的其实也就是字符串文本
当然我们如果想要在弹窗中去使用表单形式的验证的话,那么就得让type =1/2

如果type:1的话,其实就相当于展示的是一个html文本
你可以将其理解为vue的v-html
react的dangerouslySetInnerHTML
其实也就是将content的内容以html的样式呈现,也就是说我们可以在这个content中编写html样式代码了。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>layer</title>
    <link rel="stylesheet" href="./layui/css/layui.css" />
    <script src="./layui/layui.js"></script>
  </head>
  <body>
    <div id="layerBtn" class="layui-btn">弹出layui按钮</div>
  </body>
  <div style="display: none" id="biaodan">
    <form class="layui-form" lay-filter="form">
      <div>usrname:<input lay-verify="required" style="width: 30%" type="text" class="layui-input" /></div>
      <div>password:<input style="width: 30%" lay-verify="required" type="text" class="layui-input" /></div>
      <button id="submit" class="layui-btn" lay-submit lay-filter="submit">提交</button>
    </form>
  </div>
</html>
<script type="text/html" id="biaodan"></script>
<script>
  // 挂载layui,添加jquery和form 一会我们会用到
  layui.use(['layer', 'jquery', 'form'], function () {
    // 这个时候将挂载到layui中的layer放置到一个变量上面,有助于我们调用
    var layer = layui.layer
    var $ = layui.jquery
    var form = layui.form
    form.render(null, 'form')
    // 首先第一种调用方法就是(采用的是jquery的点击事件)
    $('#layerBtn').on('click', function (e) {
      // 调用的layer弹窗
      layer.open({
        type: 1,
        title: '表单验证',
        area: ['80%', '80%'],//弹框大小  屏幕宽度的80%,高度的80%;
        content: $('#biaodan'), //可以使用$('#id,.class')这种方式来指定模板,可以将其理解为指定一个组件,当然也是可以自己去写的,像'<div>我是一个内容</div>'
        // 打开弹窗的回调函数,用于回显页面数据
        success: function () {
          console.log('我打开了弹窗')
        },
      })
    })
    // 表单提交事件
    form.on('submit(submit)', function (data) {
      console.log(data.elem) //被执行事件的元素DOM对象,一般为button对象
      console.log(data.form) //被执行提交的form对象,一般在存在form标签时才会返回
      console.log(data.field) //当前容器的全部表单字段,名值对形式:{name: value}
      return false //阻止表单跳转。如果需要表单跳转,去掉这段即可。
    })
  })
</script>

来看一下效果
在这里插入图片描述
这个时候我们如果点击下方的提交其实也就会触发表单的提交事件
我们来看

    // on的第一个参数括号中绑定的submit其实也就是 lay-filter的值
    form.on('submit(submit)', function (data) {
      console.log(data.elem) //被执行事件的元素DOM对象,一般为button对象
      console.log(data.form) //被执行提交的form对象,一般在存在form标签时才会返回
      console.log(data.field) //当前容器的全部表单字段,名值对形式:{name: value}
      return false //阻止表单跳转。如果需要表单跳转,去掉这段即可。
    })

这是对应绑定的submit提交事件
在这里插入图片描述
当我们点击提交之后触发的效果我们来看
在这里插入图片描述
触发了表单校验规则,其实首先就是我们需要在表单中添加一个 lay-verify=“required”
这个lay-verify的值我们可以自定义,官方其实也给我们配置好了几个值,我在这边使用的其实就是required,不允许为空。
具体的可以参考官网
当然我们因为是弹窗我们肯定要用弹窗中的确认按钮,而我们现在触发表单事件所选取的按钮是form表单中的按钮,这对强迫症的我是及其难受的,在这里的话有一种解决方式。
首先我们要在open中添加一个btn:[‘确认’,‘取消’]

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>layer</title>
    <link rel="stylesheet" href="./layui/css/layui.css" />
    <script src="./layui/layui.js"></script>
  </head>
  <body>
    <div id="layerBtn" class="layui-btn">弹出layui按钮</div>
  </body>
  <div style="display: none" id="biaodan">
    <form class="layui-form" lay-filter="form">
      <div>usrname:<input name="username" id="username" lay-verify="required" style="width: 30%" type="text" class="layui-input" /></div>
      <div>password:<input name="password" id="password" style="width: 30%" lay-verify="required" type="text" class="layui-input" /></div>
      <!-- dispaly设置为none,否则页面加载就会渲染 -->
      <button style="display: none" id="submit" class="layui-btn" lay-submit lay-filter="submit">提交</button>
    </form>
  </div>
</html>
<script type="text/html" id="biaodan"></script>
<script>
  // 挂载layui,添加jquery和form 一会我们会用到
  layui.use(['layer', 'jquery', 'form'], function () {
    // 这个时候将挂载到layui中的layer放置到一个变量上面,有助于我们调用
    var layer = layui.layer
    var $ = layui.jquery
    var form = layui.form
    var isSubOk = false
    var mengIndex = 0
    form.render(null, 'form')
    // 首先第一种调用方法就是(采用的是jquery的点击事件)
    $('#layerBtn').on('click', function (e) {
      // 调用的layer弹窗
      layer.open({
        type: 1,
        title: '表单验证',
        area: ['80%', '80%'],
        content: $('#biaodan'), //可以使用$('#id,.class')这种方式来指定模板,可以将其理解为指定一个组件,当然也是可以自己去写的,像'<div>我是一个内容</div>'
        btn: ['确认', '取消'],
        yes: function (index, layero) {
          // 获取当前蒙版层的索引
          mengIndex = index
          $('#submit').click()
        },
        btn2: function (index, layero) {
          layer.close(index)
        },
        // 打开弹窗的回调函数,用于回显页面数据
        success: function () {
          // 清除上一次的数据
          isSubOk = false
          $('#username').val('')
          $('#password').val('')
          console.log('我打开了弹窗')
        },
      })
    })
    // 表单提交事件
    form.on('submit(submit)', function (data) {
      isSubOk = true
      console.log(data.elem) //被执行事件的元素DOM对象,一般为button对象
      console.log(data.form) //被执行提交的form对象,一般在存在form标签时才会返回
      console.log(data.field) //当前容器的全部表单字段,名值对形式:{name: value}

      // 我们可以再次发起请求
      // $.ajax   我在这里使用settimeout进行伪造一个异步请求
      setTimeout(() => {
        // 我们根据全局定义的meng版索引来关闭这个蒙版,假装就是当请求成功时就关闭这个蒙版
        layer.close(mengIndex)
      }, 2000)

      return false //阻止表单跳转。如果需要表单跳转,去掉这段即可。
    })
  })
</script>

代码实现效果可以尝试着测试一下,也就是当我们点击确定之后先进行表单校验,当校验通过后,去触发form表单中的submit提交事件click方法,实现点击弹出层的确定从而触发表单的校验。

至于type:2,其实就是一个ifram子页面,这个的话其实也差不多content直接指定地址就可以了。大体的话其实弹窗就是这些,其他一些参数我们用到看官网查其实就可以了。

layui的layer.confirm获取按钮焦点 因为ayer.confirm的按钮并非采用button,而是a标签,所以获取按钮焦点获取不到,要采用别的方法,下面介绍在ie11中和ie8中不同的写法 在ie11中 layer.confirm('确定取消这个弹窗吗?',{ btn: ['确定', '取消'], success:function(layero){ //获取焦点 var btn = l... 阅读详情

相关推荐

实现LayUi框架的模块化功能

LayUi是一款基于JavaScript的前端UI框架,提供了丰富的组件和样式,可以帮助开发者快速构建漂亮的Web界面。其中,模块化是LayUi框架的一个重要特性,它允许开发者将功能模块化地组织起来,提高代码的可维护性和复用性。在本文中,我们将详细介绍如何使用LayUi框架实现模块化功能,并提供相应的源代码示例。通过定义和导入不同的模块,我们可以将功能按照模块划分,提高代码的可读性和可维护性。接下来,我们可以使用LayUi的模块化功能来组织我们的代码。参数,我们可以将模块导出,以便其他模块可以使用它。

XymkMl的博客 325

layui框架学习(24:弹出层模块_消息框&提示框)

学习并记录了弹出层模块layer中最简单的提示框和信息框的用法及常用属性设置

gc_2299的博客 1万+

基于LayUI的后台管理界面实现包(含登录页、主框架及数据模拟)

这个资源包提供一套开箱即用的LayUI风格后台管理系统前端实现,包含完整的页面结构和基础交互逻辑。首页index.html作为入口,main.html承载主体布局,左侧导航由leftNav.js和nav.js驱动,选项卡式内容区通过bodyTab.js管理。样式方面分离了main.css、user.css、message.css等模块化CSS文件,并内置font_eolqem241z66flxr.css图标字体。JS层封装了layui.js核心库及index.js、main.js等业务脚本,支持菜单展开收缩、Tab页增删、iframe内容加载等常见后台操作。数据层面采用静态JSON模拟,包括newsList.、usersList.、message.、images.和systemParameter.,便于快速对接或调试。图片资源涵盖用户头像(userface1.jpg至userface5.jpg)、支付二维码(alipay.jpg、wechat.jpg)及系统图标(face.jpg),配合favicon.ico完善视觉识别。所有HTML页面均适配LayUI默认主题,可直接运行查看登录流程、主界面布局与模块切换效果,适合用于课程设计、原型演示或二次开发起点。

Layui的layer.confirm弹框用法,很详细

就将标题改为“操作提示”,效果是这样的layer.confirm('纳尼?', {title: "操作提示",btn: ['按钮一', '按钮二', '按钮三'] //可以无限个按钮//按钮【按钮三】的回调//按钮【按钮一】的回调//按钮【按钮二】的回调});可以通过“btnAlign”参数定义弹框按钮的位置,“btnAlign”参数值有:l(左对齐)、c(居中对齐)、r (右对齐),默认是r(右对齐),为了演示明显,这里只用一个按钮演示。

kt1776133839的博客 2万+

10bit SAR ADC电路:200多页设计与仿真文档,附gpdk045工艺与testbench,可直接导入Virtuoso仿真,含以太网、PLL电路例程及进阶ADC

拥有超过200页的详细设计和仿真文档,它以gpdk045工艺为基础,testbench均可直接导入virtuoso仿真,为我们提供了一个全面了解ADC电路设计的绝佳机会。通过对10bit SAR ADC电路的详细解析,我们不仅了解了其设计背后的原理和实现方法,还体会到了数字与模拟技术的交融之美。这个SAR ADC的结构采用了经典的电荷重分配架构。一个10bit SAR ADC电路,有200多页详细的设计和仿真文档,附带对应的gpdk045工艺,testbench都有,可直接导入virtuoso仿真。

OMyAVKmGPBOF的博客 1333

【SAP报错】BK128&K5112

在ECC中使用CO1F进行Progressive confirmation时,依次遇到了如下的报错。

weixin_45228526的博客 784

layer弹窗和layui表单取消

<div id="add-main" style="display: none;"> <form class="layui-form" id="add-form" action=""> <div class="layui-form-item center" > ...

laxexue的博客 3037

一份针对零基础学习AI Agent详细学习计划

以下是针对零基础学习者制定的AI Agent详细学习计划,结合最新行业动态和实用资源推荐,帮助你从入门到进阶系统掌握核心技能

sexy19910923的博客 1904

vue-layer修复版,一款好用的vue弹窗组件,layui-layer弹窗风格

一款好用的vue弹窗组件,layui-layer弹窗风格 vl-layer github地址 更新信息 2021.01.20 更新: 新增offset的几个固定位置:右上"rightTop"、右下"rightBottom"、左上"leftTop"、左下"leftBottom" 2021.01.22 更新: 新增offset:{left:10,bottom:10}、offset:{right:10,bottom:10}、offset:{right:10,top:10} 快速使用 npm install

pdfh5.js的博客 2229

安装keil5(MDK)及导入pack包教程

首先说明的是我安装的Keil版本为Keil V5.29.0.0 1、安装软件 右键管理员权限运行安装包 设置安装路径以及pack的存放路径 随意输入First Name和E-mail 安装驱动 完成软件安装,然后可以先关闭弹出的Pack Install(一会再添加) 2、激活一下软件 打开桌面的Keil File → License Management(我之前注册过了) 右...

hrx-@@ 10万+

Matterport3D数据集介绍与下载(全网最详细)

Matterport3D数据集介绍与下载(全网最详细)

shannanshouyin的博客 2165

解决Layui 2.9.24中layer弹窗关闭失效的3种实战方案

你是否在使用Layui的layer弹窗组件时遇到过无法关闭的问题?明明调用了`layer.close()`却毫无反应,或者弹窗关闭后页面出现异常?本文将深入分析Layui 2.9.24版本中layer弹窗关闭问题的常见原因,并提供3种经过验证的解决方案,帮助你彻底解决这一困扰。 读完本文你将学到: - 如何正确使用layer的关闭API - 常见的关闭失效场景及排查方法 - 2.9.24版本特有...

gitblog_00247的博客 590

SQL基础:HQL之常用的行列转换应用总结

行列转换是数据开发者的基本技能,也是面试重点,在数据开发中处处可见,本文对常见的几种情况进行了总结,包括了多行转多列,多行转单列,多列转多行,单列转多行的几种情况,并给出了解决思路和方法,读者可根据本文给出的思路灵活应对业务中遇到的问题。

石榴姐yyds 1800

layui表格弹窗修改_使用layer弹窗和layui表单实现新增功能

使用layer弹窗和layui表单实现新增功能2019-01-08编程之家收集整理的这篇文章主要介绍了使用layer弹窗和layui表单实现新增功能,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。1.需求:使用layer在弹窗内完成新增,成功后提示并刷新页面(父页面,list页面)2.实现--构建from表单配置名称required value="" style="width: 24...

weixin_30769779的博客 693

【云原生技术】云计算与网络:容器服务(Tencent Kubernetes Engine,简称TKE)简介

基本概念主要特点应用场景技术实现容器服务(Tencent Kubernetes Engine,简称TKE)是腾讯云提供的一种托管的容器管理服务,基于开源的Kubernetes系统。TKE旨在简化容器的部署、管理和扩展,并且提供高性能、可靠性和安全性,适用于各种规模的企业和应用。

weixin_46453070的博客 2043

Scale-up,scale-out技术概述

本文系统分析了Scale-up与Scale-out两种扩展技术在现代计算中的应用与发展。Scale-up通过增强单节点性能,适用于高耦合任务,而Scale-out通过横向扩展节点,实现高可用性和无限扩展。在芯片层面,Chiplet技术推动Scale-up发展;在数据中心层面,二者协同工作构建强大集群。光模块在长距离高带宽传输中发挥关键作用。文章对比了NVIDIA、AMD和Broadcom三家公司的技术路线,指出NVIDIA采用封闭生态,AMD选择开放标准,Broadcom则主导底层连接技术。未来发展方向将聚

元直的博客 1446

layui弹窗 iframe子页面弹窗如何覆盖父级页面

使用iframe进行嵌套页面,需求要在iframe内点击按钮,出现弹窗,但是实现中发现这个弹窗只覆盖了子页面,父页面内容仍可点击。 要实现覆盖整个页面,这里就需要用到layui中的方法,parent.layer.open({})。在父级页面打开弹出层。 此处显示的是加载动画,效果如下图: 具体操作如下: 注意:在外面的父级页面和iframe里面的子页面都需要,引用layui.js和la...

沫沫酱 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

layui之layer的使用

在使用layer的一些踩坑注意事项。

qq_51615662的博客 1649

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

layer 自定义版本Confirm 弹窗

/** * layer 修改版本Confirm 弹窗 * @author wangmutian */ //修改版本Confirm (function($){ function LayerConfirm(options){ this.opts = $.extend({},LayerConfirm.DEFAULTS,options); this._initLayerOpen(); } /** * 初始化 * @privat.

永远是死循环 1084

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Layui中layer.open弹窗最大化最小化后的高度异常问题分析

在使用Layui框架的layer.open方法创建弹窗时,当设置了maxmin: true开启最大化和最小化功能,并且将高度设置为auto时,会出现一个明显的UI异常问题。具体表现为: 1. 初始状态下弹窗显示正常,高度能够自适应内容 2. 当用户点击最小化按钮后,弹窗按预期最小化 3. 再次点击最大化按钮恢复弹窗时,弹窗内容区域的高度被错误地设置为0 4. 导致弹窗主体内容不可见,只剩下标题栏...

gitblog_00522的博客 427

LayUI内置组件实战:5分钟搞定Layer弹窗与日期选择器配置

本文为前端开发新手提供了LayUI内置组件Layer弹窗与LayDate日期选择器的快速上手实战指南。文章聚焦于最常见的应用场景和最简化的配置方式,通过清晰的代码示例,帮助开发者在5分钟内掌握这两个核心组件的核心用法与配置技巧,快速集成到项目中。

weixin_29219189的博客 333

解决layui自己设置的button无法关闭弹窗

skin: 'layui-layer-rim', //加上边框。// return false // 点击该按钮后不关闭弹层。// return false // 点击该按钮后不关闭弹层。// 合并数组中的值为一个字符串,以逗号分隔。btn: ['按钮1', '按钮2', '按钮3'],btn: ['按钮1', '按钮2', '按钮3']btn: ['确定', '取消'],// 获取子页面中存储的选中数据。// 右上角关闭事件的逻辑。// 按钮2 的回调。// 按钮3 的回调。// 按钮1 的回调。

weixin_49801874的博客 1297

使用 layer.open() 方法结合 layer.load() 实现加载动画效果。当用户在 layer.open() 中点击确定后,关闭当前弹窗并显示加载动画,同时执行其他指定的方法。

使用 layer.open() 方法结合 layer.load() 实现加载动画效果。当用户在 layer.open() 中点击确定后,关闭当前弹窗并显示加载动画,同时执行其他指定的方法。

weixin_42064877的博客 8236

layui弹窗自适应变大_layui怎么调整弹框大小?

layui怎么调整弹框大小?下面本篇文章给大家介绍一下layui中调整layer弹出窗体大小的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。layer是一个备受青睐的web弹层组件,在默认状态下layer的宽高都自适应的,但当需要自定义宽度时,可以使用area: ['500px', '400px']进行设置。设置代码:layer.open({type: 2,area:["5...

weixin_39789327的博客 6778

从若依到Layui:深入解析$.modal.open()的弹窗刷新机制与最佳实践

本文深入解析了若依框架中$.modal.open()方法的弹窗刷新机制,揭示其底层基于Layui的layer.open()实现。针对子窗口关闭后需刷新父窗口数据的常见需求,文章对比了直接刷新与回调刷新两种策略,重点阐述了利用end回调函数实现精准、高效数据同步的最佳实践,并提供了可复用的代码方案与问题排查技巧。

docker7nomad的博客 669

解决layui弹窗下的下拉选择框被遮挡或显示不全问题

问题:在做后台的时候想要实现这样一个功能,点击弹出一个窗口,窗口是下拉选择框,给用户选择。用到了layui,但是却发现,弹窗虽然固定了高宽,但是里面的下拉框,在显示的时候却被弹窗挡住了,导致滚动条出现。 如下图: 后来发现只要是不用layui提供的下拉选择框,是不会出现被遮挡的问题的。 但是我还就非要用了,怎么滴了吧... 研究很久,怎么解决呢? 方法如下: 首先看看问题出现在哪里...

qq_34266804的博客 4715
上一篇: 解决浏览器第一次输入完数据后 自动填充表单数据问题
下一篇: 彻底搞懂 Layui中的数据表格,更改请求参数等
归来巨星
归来巨星 新星创作者: 前端开发技术领域 新星创作者: 前端开发技术领域
博客等级 码龄7年 5391粉丝 95原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

归来巨星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值