uniapp 实现验证码输入框
前言
在实现页面的时候验证码输入的场景是比较常见的,如果使用一些前端 UI 组件会有这样的组件,可一些情况下需要自己去实现。比如小程序,如果过多依赖组件库,在一个小程序中仅使用一个组件库还好,引用组件多了会受到包大小的限制打包不了,所以一些效果和样式能自己写尽量自己写(仅限简单的,不建议重复造车)。
我们今天要分享的验证码输入框就是比较简单的一种实现,若为了它去引一个组件到工程中是不值得的,占空间。所以今天我动手实现了一个,供大家借鉴参考。
正文
话不多说,我们先看效果:
Dom 部分
<view class="phone_code"><text class="phone_code_label">验证码已发送至</text><view class="phone_code_count"><text class="phone_code_count_new">{{ newPhone }}</text><view v-if="isReget" class="phone_code_count_reget"><button plain="true" type="warn" size="mini" @click="getCode">重新获取</button></view> <text v-else class="phone_code_count_down">获取验证码<text>{{count}}</text>s</text></view><view class="phone_code_single"><input class="phone_code_single_cinput" adjust-position="false" auto-blur="true" @blur="codeNumBlurFun" @input="codeNumInputFun" :focus="focus" v-model="code" type="number" maxlength="6"/><view class="phone_code_single_codeinput"><view v-for="(item,index) in 6" :key="index" @click="codefocusFun(index)" :style="(index == code.length? 'background-color:#FEF2F2;':'color: #313131;background-color:#eee')">{{code[index]}}</view></view> </view><button :disabled="isCode" class="btn" type="warn" @click="submitFun()">确定</button></view>
JS 部分
<script> export default {data() {return {newPhone: "167****8898", // 当前显示电话isReget: false, // 判断是否显示 ‘重新获取’按钮 timer: null, // 定时器count: 60, // 时间code: "", // 验证码 focus: true, // 焦点isCode:true // ‘确定’按钮是否禁用} },onLoad(options) {this.getTimer() // 开启定时器this.getCode() // 获取验证码 },watch:{count(val){if(val==0){this.isReget = true clearInterval(this.timer)}},},methods: {/*** AUTHOR: 单乘风* DESC: 定时器 * */ getTimer(){this.timer = setInterval(()=>{if(this.count==0){clearInterval(this.timer)uni.navigateBack({delta: 1})return}this.count-- }, 1000)},/*** AUTHOR: 单乘风* DESC: 获取验证码 * */getCode(){console.log("获取验证码", this.newPhone)if(this.count==0){this.count = 60 this.isReget = false this.getTimer()}},/*** AUTHOR: 单乘风* DESC: 输入框输入事件 * */ codeNumInputFun(e){ let val = e.detail.value this.code = val if(val.length==6) this.isCode = falseelse this.isCode = true },/*** AUTHOR: 单乘风* DESC: 输入框失去焦点事件 * */ codeNumBlurFun(e){let val = e.detail.value this.focus = falseif(val.length==6) this.isCode = falseelse this.isCode = true },/*** AUTHOR: 单乘风* DESC: 输入框点击事件* @param {Number} index 当前点击框索引* */ codefocusFun(index){ this.focus = true },/*** AUTHOR: 单乘风* DESC: 按钮点击事件* */ submitFun(){ console.log("确认更换手机号")},}}
</script>
SCSS 部分
<style lang="scss" scoped>.phone{background-color: #FFF;width: 100vw;height: 100vh; &_code{padding: 30rpx;&_label{font-size: 30rpx;color: #999;}&_count{margin-top: 30rpx;display: flex;flex-direction: row;justify-content: space-between; align-items: center;height: 100rpx;&_new{color: #e64340;font-size: 38rpx;font-weight: bold; }&_down{border: 1rpx solid #eee;border-radius: 10rpx; color: #999;height: 60rpx;line-height: 60rpx;padding: 0 20rpx;text{margin-left: 10rpx;}} }&_single{margin-top: 30rpx; &_cinput{position: fixed;left: -100rpx;width: 50rpx;height: 50rpx;}&_codeinput{margin: auto;width: 650rpx;height: 100rpx;display: flex;}&_codeinput>view {margin-top: 5rpx;margin-left: 15rpx;width: 86rpx;height: 86rpx;line-height: 86rpx;font-size: 60rpx;font-weight: bold;color: #313131;text-align: center;border-radius: 10rpx;}&_codeinput>view:nth-child(1) {margin-left: 0rpx;} }}
}
</style>
总结
效果、代码如上,话要少叙,若对您有用请留下您的足迹,若写的有瑕疵也请不吝指教。 如上代码可以根据个人需求进行优化,我没有发起请求,方法已经建立了也已经注明,把自己的请求加入即可。 如果有不懂的欢迎留言交流。
uniapp 实现验证码输入框相关推荐
- uniapp 手机验证码输入框(随机数、倒计时、隐藏手机号码中间四位)可以直接使用
如键盘被隐藏,可直接点击蓝框弹出键盘,蓝框就相当于input的光标,验证码输入错误之后会将字体以及边框改为红色,持续1.5s(可自行修改时间),然后清空数据. <template>& ...
- vue中验证码输入框
如这样的验证码输入框,要实现一个类似于这样的输入框,而且有几个页面都需要类似的输入框(输入身份证后四位/输入支付密码),就准备撸一个小组件. 原理: 对每个input输入输入框进行函数的操作, 代码如 ...
- Android View篇之自定义验证码输入框
首先,我们来看看实现的是怎么样的效果: 如果我们拿到这样的UI,想到的布局应该是用4个EditText包在横向的LinearLayout里面,但今天要讲的View,所以我们决定用一个自定义的EditT ...
- Flutter 完美的验证码输入框(2 种方法)
Flutter 完美的验证码输入框(2 种方法) 本文向您展示了在 Flutter 中实现完美的验证码输入框几种不同方法. 重点是什么? 真实世界的 完美的验证码输入框或 PIN 输入 UI 通常满足 ...
- Android自定义View实现滴滴验证码输入框效果
先上效果图让大家看看 1.VerficationCodeInput.Java /** * 輸入验证码的自定义view * */ public class VerificationCodeInput e ...
- Android中的验证码输入框
验证码.激活码各种码的输入框格日常使用里屡见不鲜了,四格的,六格的 最近开发遇到这么一个输入14位序号(美观而需要输入框)的需求,本着这种简单控件,不重复造轮子的想法,开始全网搜寻ing- 但就是这么 ...
- Android 验证码输入框的实现
上篇博客讲到登录注册的流程所需用到的带显示密码的输入框,而在整个完整流程中,短信发送获取验证码并填写相信也是重要的一环.当然,关于验证码的实现很多大神的博客也写过,并且款式多样,任君选择,这里只是记录 ...
- 【Android】短信验证码输入框(80/100)
先看效果动图如下: 验证码输入框是常用的app功能页面,实现上并不复杂详情如下: 首先是布局xml文件如下: <?xml version="1.0" encoding=&qu ...
- Android 短信验证码输入框
日常开发中,我们会遇到一些很炫酷的手机短信验证码输入,但系统自带的EditText显然并不能满足所需的短信验证码输入框,因此,在系统自带的EditText基础上自定义短信验证码输入框. 实现思路是:定 ...
最新文章
- 服务器端执行javascript脚本
- Alamofire源码解读系列(五)之结果封装(Result)
- checkIP.sh
- bzoj1412[ZJOI2009]狼和羊的故事
- php常量定义表达式,从表达式创建PHP类常量的最佳解决方法?
- 教你理解复杂的C/C++声明
- weblogic下开发web项目时修改java文件不用重启的绿色方法,不用修改weblogic的配置文件、不用jar...
- linux最常用的20条命令
- EfficientNet 解析:卷积神经网络模型尺度变换的反思
- 离线强化学习总结!(原理、数据集、算法、复杂性分析、超参数调优等)
- 美国g口无限流量服务器,不是所有的G口服务器都独享不限流量,美国SK洛杉矶G口除外...
- Banner图片轮播控件
- idea显示Multiple Spring Boot run configurations were detected. Services allows to manage multiple
- demo:猜数字小游戏
- 不平衡数据集评价指标及常用解决方法
- 解决word2019中求和符号上下标被强制挪到右边的问题
- 读书笔记-effective STL
- 百度的链接打不开解决办法
- 社会主义市场体系与宏观调控
- 编译器优化故障的测试与定位