前言

在实现页面的时候验证码输入的场景是比较常见的,如果使用一些前端 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 实现验证码输入框相关推荐

  1. uniapp 手机验证码输入框(随机数、倒计时、隐藏手机号码中间四位)可以直接使用

       如键盘被隐藏,可直接点击蓝框弹出键盘,蓝框就相当于input的光标,验证码输入错误之后会将字体以及边框改为红色,持续1.5s(可自行修改时间),然后清空数据. <template>& ...

  2. vue中验证码输入框

    如这样的验证码输入框,要实现一个类似于这样的输入框,而且有几个页面都需要类似的输入框(输入身份证后四位/输入支付密码),就准备撸一个小组件. 原理: 对每个input输入输入框进行函数的操作, 代码如 ...

  3. Android View篇之自定义验证码输入框

    首先,我们来看看实现的是怎么样的效果: 如果我们拿到这样的UI,想到的布局应该是用4个EditText包在横向的LinearLayout里面,但今天要讲的View,所以我们决定用一个自定义的EditT ...

  4. Flutter 完美的验证码输入框(2 种方法)

    Flutter 完美的验证码输入框(2 种方法) 本文向您展示了在 Flutter 中实现完美的验证码输入框几种不同方法. 重点是什么? 真实世界的 完美的验证码输入框或 PIN 输入 UI 通常满足 ...

  5. Android自定义View实现滴滴验证码输入框效果

    先上效果图让大家看看 1.VerficationCodeInput.Java /** * 輸入验证码的自定义view * */ public class VerificationCodeInput e ...

  6. Android中的验证码输入框

    验证码.激活码各种码的输入框格日常使用里屡见不鲜了,四格的,六格的 最近开发遇到这么一个输入14位序号(美观而需要输入框)的需求,本着这种简单控件,不重复造轮子的想法,开始全网搜寻ing- 但就是这么 ...

  7. Android 验证码输入框的实现

    上篇博客讲到登录注册的流程所需用到的带显示密码的输入框,而在整个完整流程中,短信发送获取验证码并填写相信也是重要的一环.当然,关于验证码的实现很多大神的博客也写过,并且款式多样,任君选择,这里只是记录 ...

  8. 【Android】短信验证码输入框(80/100)

    先看效果动图如下: 验证码输入框是常用的app功能页面,实现上并不复杂详情如下: 首先是布局xml文件如下: <?xml version="1.0" encoding=&qu ...

  9. Android 短信验证码输入框

    日常开发中,我们会遇到一些很炫酷的手机短信验证码输入,但系统自带的EditText显然并不能满足所需的短信验证码输入框,因此,在系统自带的EditText基础上自定义短信验证码输入框. 实现思路是:定 ...

最新文章

  1. 服务器端执行javascript脚本
  2. Alamofire源码解读系列(五)之结果封装(Result)
  3. checkIP.sh
  4. bzoj1412[ZJOI2009]狼和羊的故事
  5. php常量定义表达式,从表达式创建PHP类常量的最佳解决方法?
  6. 教你理解复杂的C/C++声明
  7. weblogic下开发web项目时修改java文件不用重启的绿色方法,不用修改weblogic的配置文件、不用jar...
  8. linux最常用的20条命令
  9. EfficientNet 解析:卷积神经网络模型尺度变换的反思
  10. 离线强化学习总结!(原理、数据集、算法、复杂性分析、超参数调优等)
  11. 美国g口无限流量服务器,不是所有的G口服务器都独享不限流量,美国SK洛杉矶G口除外...
  12. Banner图片轮播控件
  13. idea显示Multiple Spring Boot run configurations were detected. Services allows to manage multiple
  14. demo:猜数字小游戏
  15. 不平衡数据集评价指标及常用解决方法
  16. 解决word2019中求和符号上下标被强制挪到右边的问题
  17. 读书笔记-effective STL
  18. 百度的链接打不开解决办法
  19. 社会主义市场体系与宏观调控
  20. 编译器优化故障的测试与定位

热门文章

  1. mysql经典四表查询_sql 经典四表查询
  2. 文件上传漏洞靶场upload-labs学习(pass1-pass5)
  3. MATLAB app 实现音乐播放器
  4. 幼儿-综合素质【7】
  5. 产品流程规划的8个阶段
  6. PDF矢量图片转为EPS格式图片的方法
  7. uview 瀑布流_最简单的微信小程序瀑布流布局方法
  8. 学习python的难点
  9. 公开我的信息过滤器!
  10. 编译原理—实验二LL(1)语法分析(一)