我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

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

功能展示:

WXML:

<view class="all">
  <!-- 手机 -->
  <view class="tel">
    <!-- 手机图标 -->
    <view class="icon_tel">
      <image class="tel_image" class="lazy" data-src="https://image.flaticon.com/icons/svg/660/660439.svg"></image>
      <text class="tel_words">手机</text>
    </view>
    <!-- 内容 -->
    <view class="content_tel">
      <view class="adress">
        <text>+86</text>
      </view>
      <view class="sign">
        <text>▼</text>
      </view>
      <view>
        <input class="input_tel" placeholder="请输入手机号" focus="{{focus}}"  value="{{tel}}" bindinput="watchTel"/>
      </view>
    </view>
    <!-- 下划线 -->
    <view class="line_adress"></view>
    <view class="line_input"></view>
  </view>
 
  <!-- 验证码 -->
  <view class="VerificationCode ">
    <!-- 验证码图标 -->
    <view class="icon_VerificationCode">
      <image class="tel_image" class="lazy" data-src="https://image.flaticon.com/icons/png/128/179/179640.png"></image>
      <text class="tel_words">验证码</text>
    </view>
 
    <!-- 内容 -->
    <view class="content_VerificationCode">
      <view>
        <input class="input_VerificationCode" placeholder="请输入验证码" focus="{{focus}}"  value="{{VerificationCode}}" bindinput="watchVerificationCode"/>
      </view>
    </view>
    <!-- 点击获取验证码 -->
    <view>
      <button class="button_VerificationCode" size="mini" style="background-color:{{color}}" disabled="{{disabled}}" bindtap="bindButtonTap">
        <view class="world">
          <text class="button_world">{{text}}</text>
        </view>
      </button> 
    </view>
    <!-- 下划线 -->
    <view class="line_VerificationCode"></view>
  </view>
 
  <!-- 提交按钮 -->
  <view>
    <button class="button_submission" type="primary" size="default" bindtap="ChangeTel">
      <text class="button_submissionWorld">提交</text>
    </button>
</view>

WXSS:

.all{
  height: 100vh;
  width: 100vw;
  
}
 
.tel{
  position: relative;
  top: 10vh;
  left: 10vw;
  height: 16vh;
  width: 80vw;
  
}
 
.icon_tel{
  position: absolute;
  top: 1vh;
  left: 2vh;
  height: 6vh;
  width: 24vw;
  
}
 
.tel_image{
  position: absolute;
  height: 6vh;
  width: 7vw;
  
}
 
.tel_words{
  position: absolute;
  left: 9vw;
  height: 6vh;
  width: 15vw;
  top: 1vh;
  
}
 
.content_tel{
  position: absolute;
  top: 8vh;
  left: 2vw;
  height: 6vh;
  width: 75vw;
  
}
 
.line_adress{
  position: absolute;
  height: 3rpx;
  width: 21vw;
  left: 2vw;
  bottom: 0.5vh;
  background:gainsboro;
}
 
.line_input{
  position: absolute;
  height: 3rpx;
  width: 47vw;
  left: 25vw;
  bottom: 0.5vh;
  background:gainsboro;
}
 
.line_VerificationCode{
  position: absolute;
  height: 3rpx;
  width: 47vw;
  left: 2vw;
  bottom: 0.5vh;
  background:gainsboro;
}
 
.adress{
  position: absolute;
  top: 1vh;
  height: 5vh;
  width: 20vw;
  
  text-align: center;
}
 
.sign{
  position: absolute;
  height: 5vh;
  width: 4vw;
  top: 2vh;
  left: 20vw;
  
  text-align: center;
  align-items: center;
  font-size: 22rpx;
}
 
.input_tel{
  position: absolute;
  height: 6vh;
  width: 47vw;
  left: 28vw;
  
}
 
.input_VerificationCode{
  position: absolute;
  height: 6vh;
  width: 47vw;
  left: 2vw;
}
 
.VerificationCode{
  position: relative;
  top: 15vh;
  left: 10vw;
  height: 16vh;
  width: 80vw;
  
}
 
.icon_VerificationCode{
  position: absolute;
  top: 1vh;
  left: 3vh;
  height: 6vh;
  width: 24vw;
  
}
 
.content_VerificationCode{
  position: absolute;
  top: 8vh;
  left: 2vw;
  height: 6vh;
  width: 47vw;
  
}
 
.button_VerificationCode{
  
  position: absolute;
  top: 7.5vh;
  left: 50vw;
  height: 8vh;
  width: 32vw;
  border-radius:60rpx;
  background: red;
}
 
.world{
  position: absolute;
  height: 70rpx;
  width: 160rpx;
  top: 10rpx;
  left: 40rpx;
}
 
.button_world{
  font-size: 31rpx;
  text-align: center;
  align-items: center;
  color: white;
}
 
.button_submission{
  position: absolute;
  height: 7vh;
  width: 60vw;
  top: 55vh;
  left: 20vw;
  
}
 
.button_submissionWorld{
  position: absolute;
  left: 26vw;
  font-size: 35rpx;
  
  top: -2rpx;
}

JS:

var qcloud = require('../../vendor/wafer2-client-sdk/index')
var config = require('../../config')
var util = require('../../utils/util.js')
 
Page({
  data: {
    VerificationCode: '',
    text:'获取验证码',//按钮文字
    currentTime: 61, //倒计时
    disabled: false, //按钮是否禁用
    tel: '' //获取到的手机栏中的值
  },
 
  // 手机号监听输入
  watchTel: function (event) {
    console.log(event);
    this.data.tel = event.detail.value
    this.setData({
      tel: event.detail.value
    })
  },
 
  // 验证码监听输入
  watchVerificationCode: function (event) {
    console.log(event);
    this.data.VerificationCode = event.detail.value
    this.setData({
      VerificationCode: event.detail.value
    })
  },
 
  //提交修改密码表单
  ChangeTel: function () {
    var that = this
    if (this.data.VerificationCode != 10086) {
      wx.showToast({
        icon: 'none',
        title: '验证码输入错误!'
      })
    }
    else {
      util.showBusy('请求中...')
      that.data.userpwd = that.data.renewpwd
      qcloud.request({
        url: `${config.service.host}/weapp/UserChangeTel`,
        header: {
          'content-type': 'application/x-www-form-urlencoded'
        },
        method: "POST",
        data: {
          tel: that.data.tel
        },
        login: false,
        success(result) {
          util.showSuccess('请求成功完成')
          that.setData({
            requestResult: JSON.stringify(result.data)
          })
          console.log(result);
        },
        fail(error) {
          util.showModel('请求失败', error);
          console.log('request fail', error);
        }
      }),
        that.setData({
          tel: '',
          VerificationCode: ''
        })
    }
  },
 
  //获取验证码按钮
  bindButtonTap: function () {
    var that = this;
    that.setData({
      disabled: true, //只要点击了按钮就让按钮禁用 (避免正常情况下多次触发定时器事件)
      color: 'grey',
    })
    var tel = that.data.tel;
    var currentTime = that.data.currentTime
    //把手机号跟倒计时值变例成js值
    var warn = null;
    //warn为当手机号为空或格式不正确时提示用户的文字,默认为空
    if (tel == '') {
      warn = "号码不能为空";
    }
    else if (tel.trim().length != 11 || !/^1[3|4|5|6|7|8|9]\d{9}$/.test(tel)) {
      warn = "手机号格式不正确";
    }
    else {
      //当手机号正确的时候提示用户短信验证码已经发送
      wx.showToast({
        title: '短信验证码已发送',
        icon: 'none',
        duration: 2000
      });
      //设置一分钟的倒计时
      var interval = setInterval(function () {
        currentTime--;
        //每执行一次让倒计时秒数减一
        that.setData({
          text: currentTime + 's', //按钮文字变成倒计时对应秒数
        })
        //如果当秒数小于等于0时 停止计时器 且按钮文字变成重新发送 且按钮变成可用状态 倒计时的秒数也要恢复成默认秒数 即让获取验证码的按钮恢复到初始化状态只改变按钮文字
        if (currentTime <= 0) {
          clearInterval(interval)
          that.setData({
            text: '重新发送',
            currentTime: 61,
            disabled: false,
            color: 'red'
          })
        }
      }, 1000);
    };
    //判断 当提示错误信息文字不为空 即手机号输入有问题时提示用户错误信息 并且提示完之后一定要让按钮为可用状态 因为点击按钮时设置了只要点击了按钮就让按钮禁用的情况
    if (warn != null) {
      wx.showModal({
        title: '提示',
        content: warn
      })
      that.setData({
        disabled: false,
        color: 'red'
      })
      return;
    };
  },
 
})

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

微信小程序获取验证码60秒倒计时功能

这篇文章主要介绍了微信小程序获取验证码60秒倒计时模板,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-05-17

小程序获取手机验证码倒计时的方法

这篇文章主要为大家详细介绍了小程序获取手机验证码倒计时的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下<BR>
2022-11-13

微信小程序如何实现短信验证码倒计时

这篇文章主要讲解了“微信小程序如何实现短信验证码倒计时”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序如何实现短信验证码倒计时”吧!初始效果当点击按钮时候设置禁止点击效果:如下图话不
2023-06-30

小程序验证码倒计时如何获取

本篇内容介绍了“小程序验证码倒计时如何获取”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!.wxml

微信小程序如何实现验证码倒计时效果

这篇文章主要介绍了微信小程序如何实现验证码倒计时效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序如何实现验证码倒计时效果文章都会有所收获,下面我们一起来看看吧。如果写过js的倒计时,那么小程序中使用
2023-06-30

Android封装实现短信验证码的获取倒计时

这篇文章主要介绍了Android封装实现短信验证码的获取倒计时,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
2023-03-12

微信小程序如何实现手机验证码登录

本篇内容介绍了“微信小程序如何实现手机验证码登录”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先我们进入小程序页面:wxml页面: