微信小程序获取手机验证码的方法

本文实例为大家分享了微信小程序获取手机验证码的具体代码,供大家参考,具体内容如下

完成手机验证码的功能:

(1)效果图如下:

(开始发送验证码)

(重新发送验证码)

(2)需求及思路说明:

  • 输入正确的11位手机号,使用正则校验。
  • 校验手机号的归属地----北京移动(这个根据需求而定)
  • 点击 “获取验证码” ,获取成功与失败,都会以弹框的形式展现,完成倒计时。
  • 倒计时为 ‘0’ 的时候,按钮文字变成 “重新发送”
  • 当按钮是 “获取验证码” 和 “重新发送” 的时候,按钮是可以点击进行倒计时的
  • 在倒计时过程中,按钮是不可点击的(也就是防止在倒计时的过程中重复点击)

.wxml 文件

<block wx:if='{{show_detail_title}}'>
  <view class='show_detail_centent ver_phone_con'>
    <form>
      <view class='show_detail_centent_title ver_title' >验证</view>
      <view class='error_tip}}' style="{{error_tip == true?'visibility:visible':'visibility: hidden'}}">{{error_tip_txt}}</view>
      <view class='phone_verification'>
      <view class='ver_item'>
        <input type='text' class='phone_number' value="{{telNumber}}" bindinput="input_phone" placeholder-style='color:#cdcdcd' placeholder='请获取手机号'/>
        <button type="primary" formType="submit" class='get_phone_number' open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">获取手机号</button>
      </view>
      <view class='last_phone_number  ver_item'>
        <input type='number' class='phone_number' bindinput="input_code" value='{{phone_code}}' placeholder-style='color:#cdcdcd'  placeholder='验证码'/>
        <button type="primary" formType="submit" class='get_phone_number' bindtap="getPhoneCode"  disabled='{{code_show}}'>{{login_VerifyCode}}</button>
      </view>
      <button type="primary" formType="submit" class='finish_btn' disabled = '{{finish_show}}' bindtap="submit_finish" >完成</button>
      <view class='phone_tip'>注:办理******需验证手机号码</view>
      </view>
    </form>
  </view>
</block>

.js文件

data:{
    login_VerifyCode: '获取验证码',
    telNumber: '',            // 用户手机号
    phone_code: '',          // 手机验证码
    error_tip: false,        // 获取手机号、验证码的错误提示
    error_tip_txt: '',       // 错误信息提示内容
     code_show: false,       // 重复点击 获取验证码
},
// 获取手机验证码
  getPhoneCode: function() {
    if (this.data.login_VerifyCode == '获取验证码' || this.data.login_VerifyCode == '重新发送'){
      let telNumber = this.data.telNumber;
      console.log('获取验证码', telNumber.length);
      console.log(util.regNumber(telNumber));
      if (telNumber == '') {
        this.setData({
          error_tip: true,
          error_tip_txt: '请输入手机号码'
        })
      } else if (telNumber.length != 11) {
        this.setData({
          error_tip: true,
          error_tip_txt: '请输入正确的手机号码'
        })
      } else {
        //验证是否是北京移动的手机号码
        var url = '/v1/broadband/isBJMobiel.do';
        var params = {
          session: wx.getStorageSync('session'),
          phone: telNumber
        }
        httpUtil.postData(url, params, '', (res) => {
          console.log('判断手机号码的', res);
          if (res.module == "N") {
            this.setData({
              error_tip: true,
              error_tip_txt: '此手机号非北京移动用户',
              code_show: true
            })
          } else {
            var url = '/v1/bdbrokerRenewal/authSendMsg.do';
            var params = {
              session: wx.getStorageSync('session'),
              phone: telNumber
            };
            httpUtil.postData(url, params, '', (res) => {
              console.log(res);
              if (res.success) {
                wx.showToast({
                  title: '短信验证码发送成功,请注意查收',
                  icon: 'success',
                  duration: 2000
                })
                var total_micro_second = 60;
                // 验证码倒计时
                this.count_down(total_micro_second);
              } else {
                that.setData({
                  login_tip: "验证码发送失败,请稍候重试"
                });
              }
            });
          }
        });
      }
    }
  },
// 倒计时 验证码
  count_down: function(total_micro_second) { //发送验证码按钮
    var that = this;
    if (total_micro_second <= 0) {
      that.setData({
        login_VerifyCode: "重新发送"
      });
      // timeout则跳出递归
      return false;
    } else {
      // 渲染倒计时时钟
      that.setData({
        login_VerifyCode: total_micro_second + "s"
      });
      total_micro_second--;
      if (that.data.login_timer == true) {
        setTimeout(function() {
          that.count_down(total_micro_second);
        }, 1000)
      } else {
        that.setData({
          login_VerifyCode: "获取验证码"
        });
      }
    }
  },
  // 输入框失去焦点   手机号
  input_phone: function(e) {
    console.log('手机号码', e);
    this.setData({
      telNumber: e.detail.value,
      error_tip_txt: ''
    })
    this.color_finish();
  },
  // 输入框输入   验证码
  input_code: function(e) {
    console.log('验证码值', e);
    this.setData({
      phone_code: e.detail.value
    })
    this.color_finish();
  },
  // 完成   提交按钮颜色变化
  color_finish: function() {
    if (telNumber_status(this.data.telNumber) && code_status(this.data.phone_code)) {
      this.setData({
        finish_show: false
      })
    } else {
      this.setData({
        finish_show: true
      })
    }
  },
 
 
// 判断全国号段
const regNumber = mobile => {
  var move = /^((134)|(135)|(136)|(137)|(138)|(139)|(147)|(150)|(151)|(152)|(157)|(158)|(159)|(178)|(182)|(183)|(184)|(187)|(188)|(198))\d{8}$/g; //移动
  var link = /^((130)|(131)|(132)|(155)|(156)|(145)|(185)|(186)|(176)|(175)|(170)|(171)|(166))\d{8}$/g; //联通
  var telecom = /^((133)|(153)|(173)|(177)|(180)|(181)|(189)|(199))\d{8}$/g; //电信
  if (move.test(mobile)) {
    return true;
  } else if (link.test(mobile)) {
    return true;
  } else if (telecom.test(mobile)) {
    return true;
  } else {
    return false;
  }
}

以上根据思路说明,把条理梳理清晰,也就能顺利完成。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 微信小程序如何获取手机验证码

    一种比较常见的功能获取手机验证码,供大家参考,具体内容如下 先看效果图: 其实这个功能实现起来很简单,主要就是调取第三方接口,拿到返回值验证的问题 直接上代码吧: <view class='changeInfo'> <view class='changeInfoName'> <input placeholder='请输入姓名' bindinput='getNameValue' value='{{name}}'/> </view> <view class

  • 微信小程序实现发送验证码按钮效果

    本文实例为大家分享了微信小程序发送验证码按钮效果展示的具体代码,供大家参考,具体内容如下 首先上图,最终效果如下: 实现关键点 获取验证码按钮无边框: 可以用 button::after{ border: none; } 来去除边框,或者直接用view绑定点击事件.本例子中没有使用button 点击发送后,60秒内按钮处于disable状态 点击发送后,text分为剩余秒数和后缀两部分 .form_group 使用 flex 布局 代码 .wxml <view class="form_gr

  • 微信小程序6位或多位验证码密码输入框功能的实现代码

    在做小程序过程中做一个6位验证码输入框,本以为很简单,但是在写的时候遇到各种各样的阻力,在网上查阅资料也寥寥无几,后来经过一番思考,终于敲定下来本人最满意的方案,特意发出来让大家参考一下,希望能帮到大家! 一.效果图如下: 二.代码部分 wxml: <form bindsubmit="formSubmit"> <view class='content'> <block wx:for="{{Length}}" wx:key="i

  • 微信小程序实现验证码获取倒计时效果

    本文实例为大家分享了微信小程序实现获取验证码倒计时效果的具体代码,供大家参考,具体内容如下 wxml <button disabled='{{disabled}}' data-id="2" bindtap="getVerificationCode"> {{time}} </button> js var interval = null //倒计时函数 Page({ data: { date:'请选择日期', fun_id:2, time: '获

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

    微信小程序注册完整实例,发送短信验证码,带60秒倒计时功能,无需服务器端.效果图: 代码: index.wxml <!--index.wxml--> <view class="container"> <view class='row'> <input placeholder='请输入姓名' bindinput='bindNameInput'/> </view> <view class='row'> <inpu

  • 微信小程序绑定手机号获取验证码功能

    微信小程序验证码获取方式,代码如下所示: <!-- 绑定手机号 --> <view class='content'> <form bindsubmit="formSubmit"> <view class='phone-box'> <text class='phone'>手机号</text> <input name="phone" type='number' placeholder=&quo

  • 详解如何使用微信小程序云函数发送短信验证码

    其实微信小程序前端和云端都是可以调用短信平台接口发送短信的,使用云端云函数的好处是无需配置域名,也没有个数限制. 本文使用的是榛子云短信平台(http://smsow.zhenzikj.com) ,SDK下载: http://smsow.zhenzikj.com/doc/sdk.html 1.安装 下载后的SDK在cloudfunctions文件夹下会包含3个云函数文件夹,如下: 由于目前IDE没有云函数导入功能,您需要手工创建同名的云函数,然后将云函数下的文件手工拷进去 注:下载的SDK是一个

  • 微信小程序实现倒计时60s获取验证码

    本文实例为大家分享了微信小程序倒计时获取验证码的具体代码,供大家参考,具体内容如下 1.工具类(引用微信小程序提供的工具类) countdown.js class Countdown { constructor(options = {}) { Object.assign(this, { options, }) this.__init() } /** * 初始化 */ __init() { this.page = getCurrentPages()[getCurrentPages().length

  • 微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)

    下面一小段代码给大家介绍微信小程序 功能函数 密码验证*,具体代码如下所示: //登录输入密码 userPasswordInput: function (e) { var that = this; this.setData({ userPassword: e.detail.value }) // console.log(e.detail.value.length) // console.log(e.detail.value); var value = e.detail.value var str

  • 微信小程序实现随机验证码功能

    本文实例为大家分享了微信小程序实现随机验证码的具体代码,供大家参考,具体内容如下 效果图: 小程序上经常会有一些注册 申请页面需要用到随机验证码.具体实现方法不多说 直接上代码 <view class='yanzhengma'> <text class='left'>{[code]}</text> <text class='right' bindtap='huanyizhang'>换一张</text> </view> CSS: .ya

随机推荐