微信小程序實現(xiàn)驗證碼倒計時效果
本文實例為大家分享了微信小程序驗證碼倒計時效果的具體代碼,供大家參考,具體內容如下
如果寫過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.;
? ? ? clearInterval(this.data.inter);
? ? ? this.setData({
? ? ? ? isyanzhengma: true
? ? ? })
? ? }
? },手機登錄、填手機號獲取驗證碼,倒計時后重新獲取效果
描述:
輸入正確的手機號并且輸入驗證碼后,手機登錄按鈕變?yōu)榧t色可點擊狀態(tài);自動驗證輸入的手機號是否為合法手機號;點擊獲取動態(tài)碼后開始60秒倒計時后才可以再次獲取動態(tài)碼;
效果圖:

代碼:
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">獲取動態(tài)碼</text>
? ? <text class="dongtaima" wx:else>重發(fā)({{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({
? /**
? ?* 頁面的初始數(shù)據(jù)
? ?*/
? 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 == '發(fā)送成功!') {
? ? ? ? ? wx.showToast({
? ? ? ? ? ? title: res.data.msg,
? ? ? ? ? ? icon: "none",
? ? ? ? ? ? duration: 2000
? ? ? ? ? })
? ? ? ? ? this.setData({
? ? ? ? ? ? isyanzhengma: false
? ? ? ? ? })
? ? ? ? ? this.daojishi();
? ? ? ? } else {
? ? ? ? ? wx.showToast({
? ? ? ? ? ? title: "發(fā)送失敗,請重發(fā)!",
? ? ? ? ? ? icon: "none",
? ? ? ? ? ? duration: 2000
? ? ? ? ? })
? ? ? ? }
? ? ? })
? ? } else if (!this.data.teltrue) {
? ? ? wx.showToast({
? ? ? ? title: "請?zhí)顚懻_的手機號!",
? ? ? ? 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.;
? ? ? 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") { //登錄成功 修改參數(shù)
? ? ? ? ? //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(); // 當前頁的數(shù)據(jù),
? ? ? ? ? //let prevPage = pages[pages.length - 3]; // 上上頁的數(shù)據(jù)
? ? ? ? ? //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: "請?zhí)顚懻_的手機號!",
? ? ? ? icon: "none",
? ? ? ? duration: 2000
? ? ? })
? ? } else {
? ? ? wx.showToast({
? ? ? ? title: "請?zhí)顚戲炞C碼!",
? ? ? ? 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;
? }
}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
獲取客戶端網(wǎng)卡MAC地址和IP地址實現(xiàn)JS代碼
獲取客戶端的一些信息,如IP和MAC,以結合身份驗證,相信很多人都會這樣做吧,我們這里用Javascript,這樣做的好處是不需要服務器端進行處理,有客戶端自行獲取,感興趣的你可以參考下哈2013-03-03
UniApp中Scroll-View設置占滿下方剩余高度的方法記錄
在使用uniapp開發(fā)項目過程中有時候會想讓一些組件占有屏幕剩余的高度,下面這篇文章主要給大家介紹了關于UniApp中Scroll-View設置占滿下方剩余高度的方法,需要的朋友可以參考下2023-04-04
js拆分字符串并將分割的數(shù)據(jù)放到數(shù)組中的方法
這篇文章主要介紹了js拆分字符串并將分割的數(shù)據(jù)放到數(shù)組中的方法,涉及javascript中split方法及數(shù)組的操作技巧,需要的朋友可以參考下2015-05-05
原生js獲取iframe中dom元素--父子頁面相互獲取對方dom元素的方法
下面小編就為大家?guī)硪黄鷍s獲取iframe中dom元素--父子頁面相互獲取對方dom元素的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08
document.createElement("A")比較不錯的屬性
document.createElement("A")比較不錯的屬性...2007-08-08
微信小程序出現(xiàn)wx.navigateTo頁面不跳轉問題的解決方法
這篇文章主要介紹了微信小程序出現(xiàn)wx.navigateTo頁面不跳轉問題的解決方法,簡單分析了微信小程序出現(xiàn)wx.navigateTo頁面不跳轉情況的原因及相應的解決方法,需要的朋友可以參考下2017-12-12
JavaScript中call,apply,bind的區(qū)別與實現(xiàn)
這篇文章主要介紹了JavaScript中call,apply,bind的區(qū)別與實現(xiàn),文章通過圍繞主題思想展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09

