微信小程序注册完整实例,发送短信验证码,带60秒倒计时功能,无需服务器端。效果图:
代码:
index.wxml
<!--index.wxml--> <view class="container"> <view class=\'row\'> <input placeholder=\'请输入姓名\' bindinput=\'bindNameInput\'/> </view> <view class=\'row\'> <input placeholder=\'请输入手机号\' bindinput=\'bindPhoneInput\'/> </view> <view class=\'row\'> <input placeholder=\'请输验证码\' bindinput=\'bindCodeInput\' style=\'width:70%;\'/> <button class=\'codeBtn\' bindtap=\'getCode\' hidden=\'{{hidden}}\' disabled=\'{{btnDisabled}}\'>{{btnValue}}</button> </view> <view> <button class=\'save\' bindtap=\'save\' >保存</button> </view> </view>
index.js
//index.js var zhenzisms = require(\'../../utils/zhenzisms.js\'); //获取应用实例 const app = getApp(); Page({ data: { hidden: true, btnValue:\'\', btnDisabled:false, name: \'\', phone: \'\', code: \'\', second: 60 }, onLoad: function () { }, //姓名输入 bindNameInput(e) { this.setData({ name: e.detail.value }) }, //手机号输入 bindPhoneInput(e) { console.log(e.detail.value); var val = e.detail.value; this.setData({ phone: val }) if(val != \'\'){ this.setData({ hidden: false, btnValue: \'获取验证码\' }) }else{ this.setData({ hidden: true }) } }, //验证码输入 bindCodeInput(e) { this.setData({ code: e.detail.value }) }, //获取短信验证码 getCode(e) { console.log(\'获取验证码\'); var that = this; zhenzisms.client.init(\'https://sms_developer.zhenzikj.com\', \'appId\', \'appSecret\'); zhenzisms.client.send(function (res) { if(res.data.code == 0){ that.timer(); return ; } wx.showToast({ title: res.data.data, icon: \'none\', duration: 2000 }) }, \'15811111111\', \'验证码为:3322\'); }, timer: function () { let promise = new Promise((resolve, reject) => { let setTimer = setInterval( () => { var second = this.data.second - 1; this.setData({ second: second, btnValue: second+\'秒\', btnDisabled: true }) if (this.data.second <= 0) { this.setData({ second: 60, btnValue: \'获取验证码\', btnDisabled: false }) resolve(setTimer) } } , 1000) }) promise.then((setTimer) => { clearInterval(setTimer) }) }, //保存 save(e) { console.log(\'姓名: \' + this.data.name); console.log(\'手机号: \' + this.data.phone); console.log(\'验证码: \' + this.data.code); //省略提交过程 } })
index.wxss
/**index.wxss**/ page{ height: 100%; width: 100%; background: linear-gradient(#5681d7, #486ec3); display: flex; flex-direction: column; } .container{ display: flex; flex-direction: column; justify-content: space-around; width: 90%; margin: 50rpx auto; } .row{ position: relative; height: 80rpx; width: 100%; border-radius: 10rpx; background: #fff; margin-bottom: 20rpx; padding-left: 20rpx; box-sizing: border-box; } .row input{ width: 100%; height:100%; } .codeBtn{ position: absolute; right: 0; top: 0; color: #bbb; width: 30%; font-size: 26rpx; height: 80rpx; line-height: 80rpx; } .subBtn{ width: 200rpx; height: 80rpx; background: #fff; color: #000; border-radius: 50rpx; line-height: 80rpx; }
完整下载: 下载
请发表评论