文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

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

如果写过js的倒计时,那么小程序中使用也是差不多的;

代码:

data: {
      daojishi:60,
    inter:''
    },
  daojishi: function () {
    this.data.inter = setInterval((res) => {
      this.fun();
    }, 1000);
  },
  fun: function () {
    let t = this.data.daojishi;
    t--;
    this.setData({
      daojishi: t
    })
    if (t <= 0) {
      // location.href = "https://www.baidu.com";
      clearInterval(this.data.inter);
      this.setData({
        isyanzhengma: true
      })
    }
  },

手机登录、填手机号获取验证码,倒计时后重新获取效果

描述:

输入正确的手机号并且输入验证码后,手机登录按钮变为红色可点击状态;自动验证输入的手机号是否为合法手机号;点击获取动态码后开始60秒倒计时后才可以再次获取动态码;

效果图:

代码:

html:

<view class="dltel">
  <view class="teltit">手机快捷登录</view>
  <view class="inpbox">
    <input placeholder="请输入手机号" class="inpbtn" type='number' maxlength="11" value="{{mobile}}" bindinput='blurPhone' />
    <text class="dongtaima {{hui?'hui':'red'}}" wx:if="{{isyanzhengma}}" bindtap="dongtaima">获取动态码</text>
    <text class="dongtaima" wx:else>重发({{daojishi}})</text>
  </view>
  <view class="inpbox">
    <input placeholder="请输入验证码" value="{[code]}" maxlength="6" class="inpbtn" bindinput="codetap"  />
  </view>

  <view class="teldl {{dlno ? 'tou50':''}}" bindtap="teldltap">
    <text class="icontxt">手机登录</text>
  </view>
</view>

js:

// pages/dltel/dltel.js

import {
  sendCode,
  mobileLogin
} from "../../utils/requst/api.js";

Page({

  
  data: {
    navbarData: {
      isfixed: false,
      iswhite: false, //icon color
      showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示
      title: '登录', //导航栏 中间的
      backgroundcolor: '#fff',
      isintercept: false //返回拦截
    },

    mobile: '',
    code: '',
    isyanzhengma: true,
    hui: true,
    dlno: true,
    daojishi: 60,
    teltrue: false,
    inter: '',
  },
  // 手机号验证
  blurPhone: function (e) {
    this.setData({
      mobile: e.detail.value
    })
    let phone = this.data.mobile;
    if (!(/^1[34578]\d{9}$/.test(phone))) {
      this.setData({
        teltrue: false,
        hui: true,
      })
      if (phone.length >= 11) {
        wx.showToast({
          title: '手机号有误',
          icon: 'none',
          duration: 2000
        })
      }
    } else {
      this.setData({
        teltrue: true,
        hui: false,
      })
      console.log('验证成功', this.data.teltrue)
    }
  },
  dongtaima: function (e) {
    if (this.data.teltrue & !this.data.hui) {
      let params = {
        mobile: this.data.mobile
      }
      sendCode(params).then((res) => {
        console.log(res);
        if (res.data.msg == '发送成功!') {
          wx.showToast({
            title: res.data.msg,
            icon: "none",
            duration: 2000
          })
          this.setData({
            isyanzhengma: false
          })
          this.daojishi();
        } else {
          wx.showToast({
            title: "发送失败,请重发!",
            icon: "none",
            duration: 2000
          })
        }
      })
    } else if (!this.data.teltrue) {
      wx.showToast({
        title: "请填写正确的手机号!",
        icon: "none",
        duration: 2000
      })
    }
  },
  codetap: function (e) {
    // console.log(e);
    this.setData({
      code: e.detail.value
    })
    if (this.data.teltrue & this.data.code != '') {
      this.setData({
        dlno: false
      })
    }
  },
  daojishi: function () {
    this.data.inter = setInterval((res) => {
      this.fun();
    }, 1000);
  },
  fun: function () {
    let t = this.data.daojishi;
    t--;
    this.setData({
      daojishi: t
    })
    if (t <= 0) {
      // location.href = "https://www.baidu.com";
      clearInterval(this.data.inter);
      this.setData({
        isyanzhengma: true
      })
    }
  },

  teldltap: function () {
    let params = {
      code: this.data.code,
      mobile: this.data.mobile
    }
    if (this.data.teltrue & this.data.code != '') {
      mobileLogin(params).then((res) => {
        // console.log(params);
        // console.log(res);
        if (res.data.message == "ok") { //登录成功 修改参数
          //getApp().globalData.token = res.data.data.token;
          //getApp().globalData.type = res.data.data.type;
          //getApp().globalData.telnum = res.data.data.mobile;
          //wx.setStorageSync('token', res.data.data.token);
          //wx.setStorageSync('type', res.data.data.type);
          //wx.setStorageSync('telnum', res.data.data.mobile);

          //let pages = getCurrentPages(); // 当前页的数据,
          //let prevPage = pages[pages.length - 3]; // 上上页的数据
          //console.log(pages);
          //prevPage.setData({
            //token: res.data.data.token,
            //type: res.data.data.type,
            //telnum: res.data.data.mobile
          //})
          //wx.navigateBack({
            //delta: 2
          //})
        } else {
          wx.showToast({
            title: res.data.msg, // 未成功原因
            icon: "none",
            duration: 2000
          })
        }
      })
    } else if (!this.data.teltrue) {
      wx.showToast({
        title: "请填写正确的手机号!",
        icon: "none",
        duration: 2000
      })
    } else {
      wx.showToast({
        title: "请填写验证码!",
        icon: "none",
        duration: 2000
      })
    }

  },
  
})

css:(less)

@fontcolor:#353535;
@red:#ff2b0a;
.dltel{ 
  position: relative;
  width: 100%;
  height: 100vh;
  padding:0 40rpx;
  box-sizing: border-box;
  .teltit{
    font-size: 50rpx;
    color: @fontcolor;
    line-height: 90rpx;
    margin-top: 35rpx;
    margin-left: 20rpx;
  }
  .inpbox{
    position: relative;
    width: 100%;
    height: 100rpx;
    line-height: 100rpx;
    font-size: 28rpx;
    color: @fontcolor;
    display: flex;
    flex-direction: row;
    border-bottom: 1px solid #eee;
    .dongtaima{
      
    }
    .inpbtn{
      width: 430rpx;
      height: 100%;
      margin:0 30rpx;
    }
    .hui{
      color: #888
    }
    .red{
      color: @red;
    }
  }
  .teldl{
    position: relative;
    width: 100%;
    height: 94rpx;
    border-radius: 15rpx;
    line-height: 94rpx;
    text-align: center;
    font-size: 36rpx;
    margin-top:60rpx;
    color: #fff;
    background: @red;
  }
  .tou50{
    background:#ff9584;
  }
}

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

阅读原文内容投诉

免责声明:

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

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

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯