当前位置:首页 > 日记 > 正文

微信小程序实现倒计时60s获取验证码

微信小程序实现倒计时60s获取验证码

本文实例为大家分享了微信小程序倒计时获取验证码的具体代码,供大家参考,具体内容如下

1、工具类(引用微信小程序提供的工具类)

countdown.js

class Countdown {constructor(options = {}) {Object.assign(this, {options, })this.__init()}/*** 初始化*/__init() {this.page = getCurrentPages()[getCurrentPages().length - 1]this.setData = this.page.setData.bind(this.page)this.restart(this.options)}/*** 默认参数*/setDefaults() {return {date: `June 7, 2087 15:03:25`, refresh: 1000, offset: 0, onEnd() {}, render(date) {}, }}/*** 合并参数*/mergeOptions(options) {const defaultOptions = this.setDefaults()for (let i in defaultOptions) {if (defaultOptions.hasOwnProperty(i)) {this.options[i] = typeof options[i] !== `undefined` ? options[i] : defaultOptions[i]if (i === `date` && typeof this.options.date !== `object`) {this.options.date = new Date(this.options.date)}if (typeof this.options[i] === `function`) {this.options[i] = this.options[i].bind(this)}}}if (typeof this.options.date !== `object`) {this.options.date = new Date(this.options.date)}}/*** 计算日期差*/getDiffDate() {let diff = (this.options.date.getTime() - Date.now() + this.options.offset) / 1000let dateData = {years: 0,days: 0,hours: 0,min: 0,sec: 0,millisec: 0,}if (diff <= 0) {if (this.interval) {this.stop()this.options.onEnd()}return dateData}if (diff >= (365.25 * 86400)) {dateData.years = Math.floor(diff / (365.25 * 86400))diff -= dateData.years * 365.25 * 86400}if (diff >= 86400) {dateData.days = Math.floor(diff / 86400)diff -= dateData.days * 86400}if (diff >= 3600) {dateData.hours = Math.floor(diff / 3600)diff -= dateData.hours * 3600}if (diff >= 60) {dateData.min = Math.floor(diff / 60)diff -= dateData.min * 60}dateData.sec = Math.round(diff)dateData.millisec = diff % 1 * 1000return dateData}/*** 补零*/leadingZeros(num, length = 2) {num = String(num)if (num.length > length) return numreturn (Array(length + 1).join(`0`) + num).substr(-length)}/*** 更新组件*/update(newDate) {this.options.date = typeof newDate !== `object` ? new Date(newDate) : newDatethis.render()return this}/*** 停止倒计时*/stop() {if (this.interval) {clearInterval(this.interval)this.interval = !1}return this}/*** 渲染组件*/render() {this.options.render(this.getDiffDate())return this}/*** 启动倒计时*/start() {if (this.interval) return !1this.render()if (this.options.refresh) {this.interval = setInterval(() => {this.render()}, this.options.refresh)}return this}/*** 更新offset*/updateOffset(offset) {this.options.offset = offsetreturn this}/*** 重启倒计时*/restart(options = {}) {this.mergeOptions(options)this.interval = !1this.start()return this}}

export default Countdown

2、WXML部分:

<view class="weui-cell__ft"> <view class="weui-vcode-btn" bindtap="vcode">{{ c2 || '获取验证码' }}</view></view>

3、JS部分:

import $wuxCountDown from 'countdown/countdown'export { $wuxCountDown, }import { $wuxCountDown } from '../../components/wux' vcode: function () { if (this.c2 && this.c2.interval) return !1 this.c2 = new $wuxCountDown({ date: +(new Date) + 60000, onEnd() { this.setData({  c2: '重新获取验证码', }) }, render(date) { const sec = this.leadingZeros(date.sec, 2) + ' 秒后重发 ' date.sec !== 0 && this.setData({  c2: sec, }) }, }) }

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

相关文章

YII2自动登录Cookie总是失效的解决

YII2自动登录Cookie总是失效的解决

失效,解决方法,自动登录,电脑软件,Cookie,前言最近做Yii2自动登录功能,发现即使开启了Yii2的自动登录配置功能,浏览器关闭后,再次打开浏览器还是处于非登录状态。网上查询资料基本没有相同情况。查询登录源码:protected function sendIdentityC…

PS怎么制作清明节字体海报?

PS怎么制作清明节字体海报?

字体,清明节,海报,电脑软件,PS,清明节到了,各路商家或宣传都想设计一个美美的清明节海报,本经验将介绍如何设计一个清明节海报,希望能够帮助读者。软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时间:2015-11-041、【打开…

怎么去除PPT中单击此处添加文标题

怎么去除PPT中单击此处添加文标题

单击,方法,教程,步骤,标题,  对于一些经常用PPT做汇报或者开会的白领们,经常会遇到这样的问题,自己辛辛苦苦做好的PPT,却无端冒出了许多&ldquo;单击此处添加标题&rdquo;、&ldquo;单击此处添加文本&rdquo;等内容,那么下面小编就教你怎么去除这…

简单实现JavaScript弹幕效果

简单实现JavaScript弹幕效果

简单实现,效果,弹幕,电脑软件,JavaScript,不知大家有没有感受到,弹幕又是另一出好戏!! 不过我个人还是比较排斥看电视的时候被出来的弹幕打扰。今天我们来写一个简单的弹幕。简单到什么程度呢?看下效果: 由图可以看出,我们的呆毛html结构确实是非…

JS操作时间 - UNIX时间戳的简单介

JS操作时间 - UNIX时间戳的简单介

时间戳,操作,必看,简单,时间,准备知识GMT(Greenwich Mean Time) - 格林尼治时间。UTC(Universal Time Code) - 国际协调时间。PST(Pacific Standard Time,太平洋标准时间)。UTC出现的比GMT时间晚,可以认为UTC时间更加精确,不过它们之间只相差几…

ps怎么在岩石上刻文字? ps岩石刻字

ps怎么在岩石上刻文字? ps岩石刻字

教程,文字,岩石,上刻,电脑软件,ps中想要在岩石中雕刻文字,该怎么雕刻呢?下面我们就来看看详细的教程。软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时间:2015-11-041、首先启动Photoshop cs5,执行文件-打开命令,打开一副…

[js高手之路]单例模式实现模态框的

[js高手之路]单例模式实现模态框的

模态框,单例模式,之路,示例,高手,什么是单例呢?单,就是一个的意思。例:就是实例化出来的对象,那合在一起就是保证一个构造函数只能new出一个实例,为什么要学习单例模式呢?或者说单例模式有哪些常见的应用场景.它的使用还是很广泛,比如:弹出一个模态…

ajax异步请求刷新

ajax异步请求刷新

刷新,异步请求,电脑软件,ajax,在网站刷新的方法中,ajax刷新是一种用户体验良好的刷新方式,在结合ssh等流行的框架!最为常用了!下面就是常用一个ajax刷新表单的一个demo.$(document).ready(function () { testchaxun(); setInterval("testch…

JS设置CSS样式的方式汇总

JS设置CSS样式的方式汇总

设置,样式,方式,电脑软件,JS,1. 直接设置style的属性 某些情况用这个设置 !important值无效如果属性有'-‘号,就写成驼峰的形式(如textAlign) 如果想保留 - 号,就中括号的形式 element.style[‘text-align'] = ‘100px';element.style.he…

css和js实现弹出登录居中界面完整

css和js实现弹出登录居中界面完整

界面,登录,弹出,完整,代码,我实现的这个和许多网站上的登录弹出窗口差不多,大家举一反三,先看我写完后的结果。点击创建相册后会在这个屏幕的中间显示创建相册的表单,整个背景颜色变暗,点击右上角的X会关闭这个表单。html代码创建按钮<li id="…

纯js实现页面返回顶部的动画 | 超

纯js实现页面返回顶部的动画 | 超

动画,返回顶部,页面,简单,电脑软件,废话不多说,直接上代码var scrollTop = document.body.scrollTop; document.body.style.marginTop = -scrollTop + 'px'; document.body.scrollTop = 0; document.body.style.transition = 'all 1s …

PHP和Java的主要区别有哪些?哪个最

PHP和Java的主要区别有哪些?哪个最

开发语言,最适合,区别,有哪些,电脑软件,一、前言PHP和Java都是现在比较流行的二种编程语言。对于许多新手来说,都会思考如果学的时候,该学哪种语言呢?下面这篇文章给大家整理两者的区别以及一些选择建议,一起来看看吧。二、简介PHP与Java作为两…