jQuery实现layer.open中按钮倒计时读秒可用的协议阅读场景

今日遇到一个系统注册页网站 条款签接受流程改动的需求,往日多是使用他人网站注册登录,看见相关协议的授权设计大同小样,觉得挺有意思,这次遇到了需要我来实现这个功能,但是用习惯了vue的封装,这次是依靠jQuery与layUI的为技术栈实现,着实有些手生与麻烦,操作了一番,最终实现。

先上效果图:

已阅读复选框不可手动勾选,用户需点击查看下面的2个用户协议内容,按照查看规则完成后自动将已阅读复选框勾选,实现网站条款接受流程。

用户协议需要强制阅读时间,时间过后才可点击授权同意按钮,否则只能叉掉强制退出

若只阅读一个便提交,则也能校验出来,给出提示信息:

下面是主要代码实现:

页面代码:

<div class="col-sm-8 colctr"><div class="m-t-lg"><input type="checkbox" name="myCheckbox" id="myCheckbox" title="我已阅读并同意以下平台协议" lay-skin="primary" disabled>我已阅读并同意以下平台协议</div><p class="colctr m-t BF"><a  onclick="getFwxy();" >《服务平台服务协议》</a><a  onclick="getYszc();">《用户隐私政策》</a></p></div>

对应这里

页面倒计时的实现方法很多,但是这里需要在layer.open控件中实现倒计时,需要查阅一番资料,最终实现核心代码如下:

function getFwxy() {var i = 9;var interval;layer.open({type: 2,title: "服务协议",shadeClose: true,shade: 0.4,area: ['80%', '80%'],btn: [i+1+'s后可确认'],btnAlign: 'c',content: '<%=request.getContextPath()%>/xxxxxxx.htm',yes: function(index){if(i<=0) {layer.close(index);checkValue = checkValue + "x"if (checkValue.indexOf("c") >= 0 && checkValue.indexOf("x") >= 0){$('#myCheckbox').prop('checked', true);}}},success: function(){var fn = function() {$(".layui-layer-btn0").text(i+'s后可确认');i--;};interval = setInterval(function(){fn();if(i === 0){$(".layui-layer-btn0").text('我已阅读并同意');clearInterval(interval);}}, 1000);}});}

其中,一并写在方法中的判断是否都完成协议的阅读,是通过先定义全局变量checkValue,然后在这两个协议完成阅读时分别赋值一个C与X,提交时校验这个全局变量checkValue是否包含了这两个字母,便代表这两个协议都按照要求完成了阅读。

这里使用的是layer的open控件,layUI还有很多引以为傲的弹层组件,这里不一一介绍了,对open组件再补充一个属性的介绍方便理解:

layer.open({// 基本层类型:0(信息框,默认)1(页面层)2(iframe层,也就是解析content)3(加载层)4(tips层)type: 1,title: "标题",// 当type: 2时就是urlcontent: "内容/url",// 宽高:如果是100%就是满屏area: ['733px', '450px'],// 坐标:auto(默认坐标,即垂直水平居中),具体当文档:https://www.layui.com/doc/modules/layer.html#offsetoffset: 'auto',// 按钮:按钮1的回调是yes(也可以是btn1),而从按钮2开始,则回调为btn2: function(){},以此类推btn: ['按钮1', '按钮2'],// 关闭按钮:layer提供了两种风格的关闭按钮,可通过配置1和2来展示,如果不显示,则0closeBtn: 1,// 遮罩:默认:0.3透明度的黑色背景('#000')shade: 0.3,// 是否点击遮罩关闭:默认:falseshadeClose: false,// 自动关闭所需毫秒:默认:0不会自动关闭time: 0,// 最大最小化:默认:falsemaxmin: false,// 固定:默认:truefixed: true,// 是否允许拉伸:默认:trueresize: true,// 层叠顺序:默认:19891014,一般用于解决和其它组件的层叠冲突zIndex: 19891014,// 层弹出后的成功回调方法:layero前层DOM,index当前层索引success: function(layero, index){},// 第一个按钮事件,也可以叫btn1yes: function (index, layero) {},btn2: function (index, layero) {layer.close(index);},// 右上角关闭按钮触发的回调:默认会自动触发关闭。如果不想关闭,return false即可cancel: function(index, layero){if(layer.confirm('确定要关闭么')){ //只有当点击confirm框的确定时,该层才会关闭layer.close(index);}return false;},// 层销毁后触发的回调:无论是确认还是取消,只要层被销毁了,end都会执行,不携带任何参数。end: function(){},// 最大化后触发的回调:携带一个参数,即当前层DOMfull: function(layero){},// 最小化后触发的回调:携带一个参数,即当前层DOMmin: function(layero){},// 还原后触发的回调:携带一个参数,即当前层DOMrestore: function(layero){},
});

到此就基本完成了这个流程的代码,记录一下,可以当个工具类方便再来找,毕竟使用jquery的情况不多了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/307874.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【每日一题】轮转数组

1. 题目描述 给定一个整数数组nums&#xff0c;将数组中的元素向右轮转k个位置&#xff0c;其中k是非负数。 示例1: 输入&#xff1a;nums [1,2,3,4,5,6,7]&#xff0c;k 3 输出&#xff1a;[5,6,7,1,2,3,4] 解释&#xff1a; 向右轮转 1步&#xff1a;[7,1,2,3,4,5,6] 向右…

Java学习——设计模式——结构型模式1

文章目录 结构型模式代理模式适配器模式 结构型模式 结构型模式主要涉及如何组合各种对象以便获得更好、更灵活的结构。虽然面向对象的继承机制提供了最基本的子类扩展父类的功能&#xff0c;但结构型模式不仅仅简单地使用继承&#xff0c;而更多地通过组合与运行期的动态组合来…

数据库系统(六)数据库范式 | 函数依赖,一二三范式,BCNF,属性集闭包和正则覆盖

文章目录 1 好的关系设计的特征2 函数依赖关系3 Normal Forms 规范形式3.1 一二三范式3.1.1 基本概念3.1.2 判断是否满足3NF 3.2 BCNF3.2.1 基本概念3.2.2 判断是否满足BCNF3.2.3 分解得到BCNF 4 属性集闭包和正则覆盖4.1 属性集闭包求法4.2 属性集闭包应用4.2.1 测试某个属性集…

WPF+Halcon 培训项目实战(7):目标匹配助手

前言 为了更好地去学习WPFHalcon&#xff0c;我决定去报个班学一下。原因无非是想换个工作。相关的教学视频来源于下方的Up主的提供的教程。这里只做笔记分享&#xff0c;想要源码或者教学视频可以和他联系一下。 相关链接 微软系列技术教程 WPF 年度公益课程 Halcon开发 CSD…

Windows定时重启Tomcat

项目场景&#xff1a; 系统&#xff1a;Windows 7 Tomcat&#xff1a;apache-tomcat-8.0.5 JDK&#xff1a;1.8 问题描述 最近项目的Tomcat隔一段时间就假死&#xff0c;最后想到的解决方式就是&#xff1a;每天凌晨1点重启tomact。 解决方案&#xff1a; 使用Windows系统…

飞企互联-FE企业运营管理平台 登录绕过漏洞复现

0x01 产品简介 飞企互联-FE企业运营管理平台是一个基于云计算、智能化、大数据、物联网、移动互联网等技术支撑的云工作台。这个平台可以连接人、链接端、联通内外&#xff0c;支持企业B2B、C2B与O2O等核心需求&#xff0c;为不同行业客户的互联网转型提供支持。 0x02 漏洞概…

系列四、Eureka自我保护

一、Eureka自我保护 1.1、故障现象 保护模式主要用于一组客户端和Eureka Server之间存在网络分区场景下的保护。一旦进入保护模式&#xff0c;Eureka Server将会尝试保护其服务注册表中的信息&#xff0c;不再删除服务注册表中的数据&#xff0c;也就是不会注销任何微服务。如…

TCP 协议为什么要设计三次握手 TCP 协议,是一种可靠的,基于字节流的,面向连接的传输层协议。

文章目录 TCP 协议为什么要设计三次握手TCP 协议&#xff0c;是一种可靠的&#xff0c;基于字节流的&#xff0c;面向连接的传输层协议。TCP 通信双方的数据传输是通过字节流来实现传输的客户端向服务端发送连接请求并携带同步序列号 SYN。 今天我们来谈谈tcp的三次握手 TCP 协…

基于yolov2深度学习网络的血细胞检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1YOLOv2算法原理 4.2 YOLOv2网络结构 4.3 血细胞检测算法实现 数据集准备 数据预处理 网络训练 模型评估与优化 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MAT…

特征归一化及其原理--机器学习

归一化是数据预处理中的一种常见操作&#xff0c;其目的是将不同特征的数值范围统一或缩放到相似的尺度。这有助于提高模型的性能&#xff0c;加速模型的收敛&#xff0c;并使模型更加稳健。以下是进行归一化的一些原因和原理&#xff1a; 消除特征间的尺度差异&#xff1a; 不…

一招搞定msvcr100.dll缺失问题,msvcr100.dll丢失的多种解决方法

msvcr100.dll是Microsoft Visual C 2010 Redistributable Package的一部分&#xff0c;它是运行许多基于Windows操作系统上的应用程序所必需的动态链接库文件。如果该文件安装不正确、丢失或损坏&#xff0c;则使用该文件的应用程序将无法正常启动&#xff0c;会出现“无法启动…

数据库开发之事务和索引的详细解析

2. 事务 场景&#xff1a;学工部整个部门解散了&#xff0c;该部门及部门下的员工都需要删除了。 操作&#xff1a; -- 删除学工部 delete from dept where id 1; -- 删除成功 ​ -- 删除学工部的员工 delete from emp where dept_id 1; -- 删除失败&#xff08;操作过程中…