【uniapp】六格验证码输入框实现

news2024/11/24 10:33:02

效果图

在这里插入图片描述

代码实现

<view>
	<view class="tips">
	    已发送验证码至
	    <text class="tips-phone">{{ phoneNumber }}</text>
	</view>
	<view class="code-input-wrap">
	    <input class="code-input" v-model="codeNumber" type="number" :adjust-position="false" :auto-blur="true" maxlength="6" @input="handleInputClick" />
	    <view class="code-list">
	        <block v-for="(item, index) in 6" :key="index">
	            <view :class="['code-list-item', codeNumber.length == index ? 'active-item' : '']">{{ codeNumber[index] }}</view>
	        </block>
	    </view>
	</view>
	<view class="resending" v-if="isSending">{{ '重新发送(' + counter + 's)' }}</view>
	<view class="normal" v-else @click="handleResend">重新发送</view>
</view>
data() {
    return {
        phoneNumber: '',
        codeNumber: '',
        isPhoneValid: false,
        isCodeValid: false,
        isSending: false, // 验证码是否在发送中
        // 计时器对象
        timer: null,
        // 倒数60秒
        counter: 60
    }
},
methods: {
    // 输入验证码
    handleInputClick(e) {
        let val = e.detail.value
        this.codeNumber = val
        if (val && val.length == 6) {
            this.isCodeValid = true
        } else {
            this.isCodeValid = false
        }
    },
    // 获取验证码
    sendSmsCode() {
        if (this.isPhoneValid) {
            // 判断手机号格式是否符合要求
            if (!/^1[3456789]\d{9}$/.test(this.phoneNumber)) {
                uni.showToast({
                    title: '手机号格式不正确',
                    icon: 'none'
                })
                return false
            }
            // 判断复选框
            if (!this.isChecked) {
                this.showTips = true
                return false
            }
            // 调用接口,此处代码省略······
        }
    },
    // 倒计时
    countDown() {
        this.counter = 60
        this.isSending = true
        this.timer = setInterval(() => {
            this.counter--
            if (this.counter < 0) {
                this.reset()
            }
        }, 1000)
    },
    // 重置倒计时
    reset() {
        this.isSending = false
        if (this.timer) {
            clearInterval(this.timer)
            this.counter = 60
            this.timer = null
        }
    },
    // 重新发送
    handleResend() {
        this.codeNumber = ''
        this.sendSmsCode()
    }        
}
.tips {
    font-size: 28rpx;
    font-weight: 400;
    line-height: 36rpx;

    .tips-phone {
        font-weight: bold;
        margin-left: 20rpx;
    }
}

// 验证码输入
.code-input-wrap {
    margin: 40rpx 0;
    position: relative;
    height: 100rpx;

    .code-input {
        position: absolute;
        left: 0;
        top: 0;
        height: 100rpx;
        width: 100%;
        opacity: 0;
        z-index: 99;
        outline: none;
    }
    .code-list {
        position: absolute;
        left: 0;
        top: 0;
        width: 100%;
        height: 100rpx;
        display: flex;
        justify-content: space-between;
        .code-list-item {
            // flex: 1;
            width: 90rpx;
            height: 100rpx;
            background: #ffffff;
            border-radius: 16rpx;
            font-size: 36rpx;
            font-weight: 700;
            color: #adb3ba;
            line-height: 100rpx;
            text-align: center;
            margin-right: 10rpx;
            z-index: 5;
            box-sizing: border-box;
        }
        .code-list-item:last-child {
            margin-right: 0;
        }
        .active-item {
            border: 2rpx solid #ff466d;
        }
    }
}
.resending {
    font-size: 28rpx;
    font-weight: 500;
    line-height: 36rpx;
    margin-bottom: 60rpx;
    color: #a6acb2;
}
.normal {
    font-size: 28rpx;
    font-weight: 500;
    line-height: 36rpx;
    margin-bottom: 60rpx;
    color: #333;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1187120.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

fpga时序相关概念与理解

一、基本概念理解 对于数字系统而言&#xff0c;建立时间&#xff08;setup time&#xff09;和保持时间&#xff08;hold time&#xff09;是数字电路时序的基础。数字电路系统的稳定性&#xff0c;基本取决于时序是否满足建立时间和保持时间。 建立时间Tsu&#xff1a;触发器…

【第2章 Node.js基础】2.1 JavaScript基本语法

文章目录 学习目标JavaScript版本与JavaScript运行环境JavaScript版本JavaScript运行环境 JavaScript语句与注释语句语句块注释 变量变量的命名变量的声明与赋值变量提升变量泄露全局作用域和函数作用域块级作用域与let关键字使用const关键字声明只读常量注意 数据类型数值&…

【C++】万字一文全解【继承】及其特性__[剖析底层化繁为简](20)

前言 大家好吖&#xff0c;欢迎来到 YY 滴C系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; 目录 一.继承&复用&组合的区别1&…

EXCEL函数判断一个字符串是否包含

IF(ISNUMBER(SEARCH("批发",$E$2)),1,IF(ISNUMBER(SEARCH("零售",$E$2)),1,0))

Python高级语法----Python的元编程

文章目录 装饰器元类反射使用 `__getattr__`, `__setattr__`, 和 `__delattr__`元编程是一种编程技术,它允许程序员在运行时修改、增加或操作程序的结构。在Python中,元编程通常涉及到对类和函数的动态创建和修改,这是通过使用诸如装饰器、元类和反射等高级功能来实现的。 …

《网络协议》02. 物理层 · 数据链路层 · 网络层

title: 《网络协议》02. 物理层 数据链路层 网络层 date: 2022-08-31 22:26:48 updated: 2023-11-08 06:58:52 categories: 学习记录&#xff1a;网络协议 excerpt: 物理层&#xff08;数据通信模型&#xff0c;信道&#xff09;、数据链路层&#xff08;封装成帧&#xff0c…

不止于“初见成效”,阿斯利康要让数据流转,以 AI 带动决策智能

“阿斯利康数字化成果在进博会上引人注目&#xff0c;令我感到非常高兴。”这是阿斯利康代表的感慨。 数字化建设目标是利用先进技术来提高企业运营效率&#xff0c;降低成本。在第六届进博会的7.2 B2-01展区&#xff0c;阿斯利康不仅展示了全球领先的生物医药和医疗器械成果&a…

NSSCTF逆向题解

[SWPUCTF 2021 新生赛]简简单单的逻辑 直接把key打印出来&#xff0c;然后整理一下result&#xff0c;让key和result进行异或 key[242,168,247,147,87,203,51,248,17,69,162,120,196,150,193,154,145,8] data[0xbc,0xfb,0xa4,0xd0,0x03,0x8d,0x48,0xbd,0x4b,0x00,0xf8,0x27,0x…

ue rpg学习截图(p1-p59)

学习到59节了&#xff0c;几个ui都有了&#xff0c;

达梦数据库答案

1、 创建数据库实例&#xff0c;到/dm8/data下&#xff0c;数据库名&#xff1a;DEMO&#xff0c;实例名DEMOSERVER&#xff08;10分&#xff09; [dmdbadmServer ~]$ cd /dm8/tool [dmdbadmServer tool]$ ./dbca.sh1、 簇大小32&#xff0c;页大小16&#xff0c;登录密码&…

Vulnhub靶场之Funbox

正如该靶场的描述所说&#xff0c;它对初学者来说非常简单。 项目地址&#xff1a;Funbox: Scriptkiddie ~ VulnHub 所需工具&#xff1a; KaliLinux即可。 0x00 信息收集 打开虚拟机后使用nmap扫描一下网段存活&#xff0c;这里我给的虚拟机的范围是100-253,其中kali的IP是10…

策略模式(Stragedy)

简介 策略模式将策略&#xff08;方法&#xff09;与实体类相分离&#xff0c;使用聚合/组合替代继承。 思想&#xff1a;少用耦合性高的继承&#xff0c;尽量用聚合/组合来代替。 优点&#xff1a;将策略独立于实体类&#xff0c;策略的实现更加灵活&#xff0c;易于理解扩展…

【技术类-01】doc转PDF程序卡死的解决方案,

摘要&#xff1a; 1、出现 raise AttributeError("%s.%s" % (self._username_, attr))&#xff09; 2、表现&#xff1a;doc转PDF卡死&#xff08;白条不动或出现以上英文&#xff09; 3、解决&#xff1a;在docx保存代码行后面加上time.sleep(3) 4、原因&#x…

jsp 的div表格示例

<%page contentType"text/html;charsetgbk" pageEncoding"UTF-8"%> <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8"><title>jsp div 表格示例 &…

智能网联汽车有哪些信息安全场景

目录 1.车内安全通信 2.车云安全通信 3.安全启动 4.车载应用程序保护 5.入侵检测防御与日志管理系统 在聊完车载信息安全需求之后&#xff0c;势必要去看看​应用场景有哪些。根据之前的开发经验简单聊一下我知道的&#xff0c;还有很多没有讲&#xff0c;比如说车云之间具…

Spring Data JPA 项目配置与QueryDSL集成

一、说明 Spring Data JPA通过Spring Initializer创建时勾选相关依赖即可引入&#xff0c;QueryDSL需要单独引入。Spring JPA针对QueryDSL有比较好的兼容性&#xff0c;可以实现优雅的SQL构建。 二、设置JPA默认配置&#xff08;yaml格式&#xff09; spring:jpa:hibernate:…

08.Diffusion Model数学原理分析(上)

文章目录 Diffusion Model回顾Diffusion Model算法TrainingInference 图像生成模型的本质目标MLE vs KLVAE计算 P θ ( x ) P_\theta(x) Pθ​(x)Lower bound of log ⁡ P ( x ) \log P(x) logP(x) DDPM计算 P θ ( x ) P_\theta(x) Pθ​(x)Lower bound of log ⁡ P ( x ) \…

Vue el-table序号与复选框hover切换

效果图下&#xff1a; <template><div class"container"><el-tableref"multipleTable"id"multipleTable":data"person.tableData"cell-mouse-enter"cellEnter"cell-mouse-leave"cellLeave"selecti…

Hive3 on Spark3配置

1、软件环境 1.1 大数据组件环境 大数据组件版本Hive3.1.2Sparkspark-3.0.0-bin-hadoop3.2 1.2 操作系统环境 OS版本MacOSMonterey 12.1Linux - CentOS7.6 2、大数据组件搭建 2.1 Hive环境搭建 1&#xff09;Hive on Spark说明 Hive引擎包括&#xff1a;默认 mr、spark、…

【C++】详解 void*

文章目录 1. void *是什么&#xff1f;2. void*详解3. 和void的区别4. 应用场景4.1 函数传参时不确定类型&#xff0c;或者要支持多类型的传参&#xff1b;4.2 当函数的返回值不考虑类型指关心大小的时候 5. 总结 今天看到一段代码&#xff0c;觉得非常有意思。 void* say_hell…