前言
获取验证码的操作在开发中比比皆是,今天用一个简单的小案例教大家如何在微信小程序中实现这个操作。
实现效果:
源码如下:
wxml文件
<view class="codeBox">
<!-- input框 -->
<view>
<input placeholder="请输入验证码" />
</view>
<!-- 获取验证码按钮 -->
<view>
<text data-id="2" bindtap="getVerificationCode">{{contantTxt}}</text>
</view>
</view>
js文件
var app = getApp();
var countDown = null;
Page({
data: {
contantTxt: '获取验证码',
countTime: 5,
},
getVerificationCode() {
var that = this;
var countTime = that.data.countTime
countDown = setInterval(function () {
countTime--;
that.setData({
contantTxt: countTime + ' 秒'
})
if (countTime <= 0) {
clearInterval(countDown);
that.setData({
contantTxt: '重新发送',
countTime: 5,
})
}
}, 1000)
}
})
wxss文件
.codeBox {
margin: 50rpx;
display: flex;
align-items: center;
font-size: 12px;
}
.codeBox view:first-child {
width: 70%;
}
.codeBox view:last-child {
width: 30%;
box-shadow: 0rpx 6rpx 16rpx 0rpx rgba(0, 0, 0, 0.16);
border: 1px solid rgb(196, 210, 236);
height: 80rpx;
display: flex;
align-items: center;
justify-content: center;
border-top-right-radius: 60rpx;
border-bottom-right-radius: 60rpx;
color: rgb(0, 157, 255);
}
input {
border: 1px solid rgb(196, 210, 236);
opacity: 0.8;
box-shadow: 0rpx 6rpx 12rpx 0rpx rgba(0, 0, 0, 0.16);
background: #ffffff;
padding-left: 20rpx;
height: 80rpx;
border-top-left-radius: 60rpx;
border-bottom-left-radius: 60rpx;
}
button {
background: none;
width: 150rpx;
height: 150rpx;
display: flex;
justify-content: center;
}
button::after {
border: none;
}
button:hover {
background: none;
}
注意:
如果验证码倒计时期间再次点击 “获取验证码” 按钮,依旧会触发该事件,所以需要对此按钮做一个限制,让其在倒计时期间无法被触发,可配合防抖节流函数实现,详情见博主另一篇文章,其中有详细讲解及用法 小程序防抖节流函数封装。
|