微信小程序---完整的验证码获取倒计时效果 ---根据手机号是否符合要求进行判断

 

图示:(为了录屏把计时器调快了  自己吧计时器设成一分钟就行)

 

wxml代码:

<view class='shouji_info'>

<view class='info_list'>

<input placeholder='请输入手机号' bindinput="phoneInput"></input>

</view>

<view class='info_list'>

<input class='left' placeholder='验证码'></input>

<button class='right yanzheng_btn' bindtap="bindButtonTap" disabled='{{disabled}}' style="background-color:{{color}}">{{text}}</button>

</view>

</view>

 

wxss代码:

page{

font-size: 30rpx;

}



.left{ float: left}

.right{float: right}



.info_list {

height: 103rpx;

line-height: 103rpx;

width: 100%;

border-bottom: 1px solid #bcbcbd;

padding-left: 24rpx;

display: inline-block;

font-size: 33rpx;

}



.shouji_info input {

margin-top: 25rpx;

/* background: rebeccapurple; */

}



.yanzheng_btn {

width: 207rpx;

background: #929fff;

margin-right: 20rpx;

height: 82rpx;

margin-top: 12rpx;

text-align: center;

line-height: 82rpx;

border-radius: 15rpx;

color: #fff;

font-size: 33rpx;

padding: 0 10rpx;

}



 


 

js代码

// pages/biji/biji.js

Page({

data: {

text: '获取验证码', //按钮文字

currentTime: 61, //倒计时

disabled: false, //按钮是否禁用

phone: '' //获取到的手机栏中的值


},



//获取手机栏input中的值

phoneInput: function (e) {

this.setData({

phone: e.detail.value

})

},



//获取验证码按钮事件

bindButtonTap: function () {

var that = this;


that.setData({

disabled: true, //只要点击了按钮就让按钮禁用 (避免正常情况下多次触发定时器事件)

color: '#ccc',

})


var phone = that.data.phone;

var currentTime = that.data.currentTime //把手机号跟倒计时值变例成js值


var warn = null; //warn为当手机号为空或格式不正确时提示用户的文字,默认为空


if (phone == '') {

warn = "号码不能为空";

} else if (phone.trim().length != 11 || !/^1[3|4|5|6|7|8|9]\d{9}$/.test(phone)) {

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: '#929fff'

})

}

}, 100);


};


//判断 当提示错误信息文字不为空 即手机号输入有问题时提示用户错误信息 并且提示完之后一定要让按钮为可用状态 因为点击按钮时设置了只要点击了按钮就让按钮禁用的情况

if (warn != null) {

wx.showModal({

title: '提示',

content: warn

})



that.setData({

disabled: false,

color: '#929fff'

})

return;



};

},


})

 

来个容易懂得代码片段

Page({

  data: {
    text: '获取验证码', //按钮文字
    currentTime: 61, //倒计时
    disabled: false, //按钮是否禁用
    phone: '' //获取到的手机栏中的值

  },


  //获取手机栏input中的值

  phoneInput: function (e) {
    this.setData({
      phone: e.detail.value
    })
  },

  //获取验证码按钮事件
  bindButtonTap: function () {
    var that = this;
    var phone = that.data.phone;
    var currentTime = that.data.currentTime
    if (phone == '') {
      wx.showModal({
        title: '提示',
        content: "号码不能为空"
      })
    } else if (phone.trim().length != 11 || !/^1[3|4|5|6|7|8|9]\d{9}$/.test(phone)) {
      wx.showModal({
        title: '提示',
        content: "手机号格式不正确"
      })
    } else {
      //当手机号正确的时候提示用户短信验证码已经发送 并禁止按钮点击导致定时器多次触发的bug
      that.setData({
        disabled: true, 
        color: '#ccc',
      })
      
      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: '#929fff'
          })
        }
      }, 100);
    };


  },
})

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
在Taro开发微信小程序中,如果你需要获取用户的手机号码,可以按照以下步骤进行操作: 1. 首先,确保在微信公众平台上已经设置了小程序获取用户手机号的权限。你可以在小程序管理后台的"开发-开发设置-接口设置"中找到相关设置。 2. 在Taro的页面或组件中,引入微信小程序的API:通过`import Taro from '@tarojs/taro'`引入微信小程序的API。 3. 调用`Taro.login()`方法获取用户登录凭证code,用于后续的手机号授权验证。 4. 在获取到code后,调用`Taro.getUserInfo()`方法获取用户信息,包括手机号码。示例代码如下: ```javascript Taro.login().then((loginRes) => { if (loginRes.code) { Taro.getUserInfo().then((userRes) => { const { encryptedData, iv } = userRes.userInfo // 在这里可以将encryptedData和iv发送到后端解密获取手机号码 // 也可以直接在前端解密获取手机号码 }).catch((err) => { console.log(err) }) } else { console.log('登录失败') } }).catch((err) => { console.log(err) }) ``` 5. 在上述代码中,`encryptedData`和`iv`是用户信息的加密数据,你可以将它们发送到后端进行解密,或者在前端使用相应的解密算法解密获取手机号。 需要注意的是,获取用户手机号的过程需要用户授权,并且用户必须在微信设置中允许小程序获取手机号的权限。如果用户未授权或未设置权限,将无法获取手机号。 希望这些信息对你有所帮助!如果你还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值