微信小程序實現(xiàn)驗證碼倒計時效果
本文實例為大家分享了微信小程序驗證碼倒計時效果的具體代碼,供大家參考,具體內(nèi)容如下
如果寫過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; ? } }
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
獲取客戶端網(wǎng)卡MAC地址和IP地址實現(xiàn)JS代碼
獲取客戶端的一些信息,如IP和MAC,以結合身份驗證,相信很多人都會這樣做吧,我們這里用Javascript,這樣做的好處是不需要服務器端進行處理,有客戶端自行獲取,感興趣的你可以參考下哈2013-03-03UniApp中Scroll-View設置占滿下方剩余高度的方法記錄
在使用uniapp開發(fā)項目過程中有時候會想讓一些組件占有屏幕剩余的高度,下面這篇文章主要給大家介紹了關于UniApp中Scroll-View設置占滿下方剩余高度的方法,需要的朋友可以參考下2023-04-04js拆分字符串并將分割的數(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-08document.createElement("A")比較不錯的屬性
document.createElement("A")比較不錯的屬性...2007-08-08微信小程序出現(xiàn)wx.navigateTo頁面不跳轉問題的解決方法
這篇文章主要介紹了微信小程序出現(xiàn)wx.navigateTo頁面不跳轉問題的解決方法,簡單分析了微信小程序出現(xiàn)wx.navigateTo頁面不跳轉情況的原因及相應的解決方法,需要的朋友可以參考下2017-12-12JavaScript中call,apply,bind的區(qū)別與實現(xiàn)
這篇文章主要介紹了JavaScript中call,apply,bind的區(qū)別與實現(xiàn),文章通過圍繞主題思想展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09