为了账号安全,请及时绑定邮箱和手机立即绑定

微信小程序发送短信验证码完整实例

标签:
源码

微信小程序注册完整实例,发送短信验证码,带60秒倒计时功能,无需服务器端。效果图:

https://img1.sycdn.imooc.com//5c5d722a0001e58f03720647.jpg

 

代码:

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

      })

    }, '15801636347', '验证码为: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;

}

 


完整下载: http://smsow.zhenzikj.com/demo/download.html?fileName=zhenzisms_weixinmp_demo


详情参考: http://smsow.zhenzikj.com/doc/sdk.html


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
3
获赞与收藏
49

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消