前言

之前用vue写过一篇验证码组件的文章,现在用微信小程序实现。

布局

vue中的布局相同,换成小程序的写法:

  <view class="ys-verification"><view class="input-wrapper" wx:for="{{amount}}" wx:key="index"><input type="number" value="{{code[index]}}" data-index="{{item}}" title="code" focus="{{item === currentIndex}}" maxlength="1" bindinput='handleInput'/></view></view>

样式

/* components/VerificationCodeInput/verificationCodeInput.wxss */.ys-verification {width: 100%;height: 80px;display: flex;justify-content: space-around;
}.ys-verification .input-wrapper {border-bottom: 1px solid #d6d6d6;width: 15%;height: 0;padding-bottom: 20%;position: relative;
}.ys-verification input {position: absolute;width: 100%;height: 100%;text-align: center;transition: all 0.3s;font-size: 7vw;color: #333;
}.ys-verification input:focus {border-bottom: 1px solid #666;
}

聚焦

利用input的focus属性绑定data中的currentIndex变量,可以实现input随输入的进行而移动的效果。

删除

利用data中储存的code值与输入的值相比较判断是否有删除操作,但是这样的缺点是:没办法在当前输入框为空的情况下判断是否进行了删除操作。

组件method

 handleInput(e){let value = this.validateNumber(e.detail.value);let index = e.currentTarget.dataset.index;const oldValue = this.data.code[index];if(value!==''){let code = this.data.code;code[index] = value;this.setData({code,currentIndex: ++index});if(!code.includes('')){this.triggerEvent('onCompleted',{code: code.join('')},{bubbles: true,composed: true})}}else{const isDeleted = oldValue !== ''; // 但是无法监听当value为''的情况,因为不会触发input事件-->let code = this.data.code;code[index] = '';this.setData({code,currentIndex: isDeleted?--index:index})}},validateNumber(val) {return val.replace(/\D/g, '')},}

微信小程序 - 实现验证码组件相关推荐

  1. 微信小程序-动态验证码

    微信小程序-动态验证码 一.创建自定义组件verification-code 二.在index页面使用 一.创建自定义组件verification-code verification-code.js ...

  2. 微信小程序_基础组件学习02

    微信小程序_基础组件学习02 swiper组件 swiper是滑块容器,也就是手机端的轮播图. swiper组件有两部分组成swiper和swiper-item. swiper-item需要放在swi ...

  3. 微信小程序基于swiper组件的tab切换

    代码地址如下: http://www.demodashi.com/demo/14010.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.c ...

  4. 微信小程序授权登录 组件的封装

    微信小程序授权登录 组件的封装 新建components文件 写wxml文件 wxss部分 js部分 json引用 页面使用 页面js 授权登录 流程如下: 因为多个页面功能需要登录状态 所以做了个组 ...

  5. 微信小程序使用image组件显示图片的方法

    本文实例讲述了微信小程序使用image组件显示图片的方法.分享给大家供大家参考,具体如下: 1.效果展示 2.关键代码 ① index.wxml 代码如下: <image style=" ...

  6. 【微信小程序】选择器组件picker

    文章目录 [微信小程序]选择器组件picker picker组件的定义 picker组件的类型 picker属性 共同的属性 时间选择器time 参考 [微信小程序]选择器组件picker picke ...

  7. 微信小程序的父子组件传值

    微信小程序的父子组件传值 如果小程序中有可复用的UI且具有一定的功能性,就可以使用自定义组件将其封装起来. 下面介绍父子组件的数据传递方法,以及一个简单的组件和一个复杂的组件示例. 二.父子组件传递数 ...

  8. A095_day01_微信小程序入门与组件

    目录 微信小程序入门与组件 - Day01 1.内容介绍 2.微信小程序简介(了解) 2.1.什么是小程序 2.2.微信小程序与app的区别 2.3.小程序在入口 2.4.微信小程序的工作原理 2.5 ...

  9. 微信小程序引入vant-weapp组件遇到的bug以及解决方法

    微信小程序引入vant-weapp组件遇到的bug问题 原本百度了一波,说只要安装了node还有npm之后,使用gitBash命令行工具直接cd到根目录下然后直接引入以下代码: npm i vant- ...

最新文章

  1. 数据蒋堂 | JOIN简化 - 意义总结
  2. pfSense修改PPPoE拨号总数
  3. Altium Designer中敷铜间距修改问题
  4. java spring cloud 版 b2b2c 社交电商-服务消费者(Feign)
  5. html高度为零,html中父div高度为0的原因
  6. 实战HTML5与CSS3 第一篇】初探水深,美丽的导航,绚丽的图片爆炸!!
  7. 机器学习、数据挖掘、计算机视觉等领域经典书籍推荐
  8. dubbo 解决既是消费者又是提供者 Duplicate application configs 的问题
  9. jetty运行web项目
  10. matlab 中文件夹下图像的批处理
  11. java Sting类函数
  12. 【紫书第六章】二叉树、欧拉图基本概念与性质
  13. seo好学吗?怎么学seo?
  14. Linux Bridge
  15. perl python文本处理_Perl 调用R分词进行文本数据分析
  16. java 编程联系_《JAVA程序设计》结对编程联系_四则运算(第一周:阶段总结)...
  17. 如何构建用户满意的“服务化”数据平台
  18. 离散数学与组合数学-04图论上
  19. java实现排他平方数
  20. ReadBook_Thinking_Method

热门文章

  1. 教师网络计算机研修培训总结,教师远程培训研修总结范文(精选6篇)
  2. 2010级信管毕业生实习总结汇编版(共29份)
  3. 项目二:运用定时器中断实现蜂鸣器定时响
  4. 初探Ubutun下IDK环境的搭建
  5. 建立基于以太坊的私有网络和智能合约 1
  6. 黑莓9900java游戏_流畅度秒杀Android 史上最强黑莓9900评测
  7. Mac双屏时程序坞(任务栏)跑到副屏上怎么办
  8. Photos(PHAssetCollection)
  9. [C语言]之反省自己
  10. 计算机辩证技巧,庄子:辩证智慧与诡辩技巧