Home WeChat Applet Mini Program Development Example analysis of 60s countdown for obtaining verification code in WeChat mini program

Example analysis of 60s countdown for obtaining verification code in WeChat mini program

May 15, 2018 pm 03:39 PM
Countdown Case Analysis Applets

This article mainly introduces in detail the WeChat applet to implement a 60s countdown to obtain the verification code. It has a certain reference value. Interested friends can refer to it.

The example in this article is shared with everyone on WeChat. The specific code of the mini program countdown to obtain the verification code is for your reference. The specific content is as follows

1. Tool class (refer to the tool class provided by the WeChat mini program)

countdown.js

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

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) / 1000

let 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 * 1000

return dateData

}

/**

* 补零

*/

leadingZeros(num, length = 2) {

num = String(num)

if (num.length > length) return num

return (Array(length + 1).join(`0`) + num).substr(-length)

}

/**

* 更新组件

*/

update(newDate) {

this.options.date = typeof newDate !== `object` ? new Date(newDate) : newDate

this.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 !1

this.render()

if (this.options.refresh) {

this.interval = setInterval(() => {

this.render()

}, this.options.refresh)

}

return this

}

/**

* 更新offset

*/

updateOffset(offset) {

this.options.offset = offset

return this

}

/**

* 重启倒计时

*/

restart(options = {}) {

this.mergeOptions(options)

this.interval = !1

this.start()

return this

}

}

Copy after login

export default Countdown

2. WXML part:

1

2

3

<view class="weui-cell__ft">

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

</view>

Copy after login

3. JS part:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

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,

 })

 },

 })

 }

Copy after login

The above is the detailed content of Example analysis of 60s countdown for obtaining verification code in WeChat mini program. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to use Vue to implement button countdown effects How to use Vue to implement button countdown effects Sep 21, 2023 pm 02:03 PM

How to use Vue to implement button countdown effects

How to write a simple countdown program in C++? How to write a simple countdown program in C++? Nov 03, 2023 pm 01:39 PM

How to write a simple countdown program in C++?

Develop WeChat applet using Python Develop WeChat applet using Python Jun 17, 2023 pm 06:34 PM

Develop WeChat applet using Python

Can small programs use react? Can small programs use react? Dec 29, 2022 am 11:06 AM

Can small programs use react?

Implement card flipping effects in WeChat mini programs Implement card flipping effects in WeChat mini programs Nov 21, 2023 am 10:55 AM

Implement card flipping effects in WeChat mini programs

How uniapp achieves rapid conversion between mini programs and H5 How uniapp achieves rapid conversion between mini programs and H5 Oct 20, 2023 pm 02:12 PM

How uniapp achieves rapid conversion between mini programs and H5

How to operate mini program registration How to operate mini program registration Sep 13, 2023 pm 04:36 PM

How to operate mini program registration

Alipay launched the 'Chinese Character Picking-Rare Characters' mini program to collect and supplement the rare character library Alipay launched the 'Chinese Character Picking-Rare Characters' mini program to collect and supplement the rare character library Oct 31, 2023 pm 09:25 PM

Alipay launched the 'Chinese Character Picking-Rare Characters' mini program to collect and supplement the rare character library

See all articles