国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

微信小程序實現倒計時60s獲取驗證碼

2019-11-19 15:46:30
字體:
來源:轉載
供稿:網友

本文實例為大家分享了微信小程序倒計時獲取驗證碼的具體代碼,供大家參考,具體內容如下

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, }) }, }) }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泰兴市| 铁岭县| 凤阳县| 呼伦贝尔市| 萨迦县| 卫辉市| 台东市| 深泽县| 韩城市| 竹溪县| 玉树县| 司法| 外汇| 罗源县| 衡东县| 南岸区| 驻马店市| 曲阜市| 淮北市| 隆德县| 图片| 绥宁县| 河西区| 莱芜市| 泗水县| 宜兴市| 吉林市| 肥西县| 县级市| 锡林郭勒盟| 棋牌| 清水河县| 交口县| 大关县| 临夏市| 井陉县| 那曲县| 鹿泉市| 遵化市| 井研县| 武城县|