目录

微信小程序6位或多位验证码密码输入框

微信小程序6位或多位验证码/密码输入框

在做小程序过程中做一个6位验证码输入框,本以为很简单,但是在写的时候遇到各种各样的阻力,在网上查阅资料也寥寥无几,后来经过一番思考,终于敲定下来本人最满意的方案,特意发出来让大家参考一下,希望能帮到大家!

一、效果图如下:

https://i-blog.csdnimg.cn/blog_migrate/c96651410e37de9eea9771c600df3b2b.gif

https://i-blog.csdnimg.cn/blog_migrate/61abc59093cad284e8ef9f2bc3ec36ec.gif

二、代码部分

wxml:

  1. < form

    bindsubmit

    “formSubmit” >

  2. < view

    class

    ‘content’ >

  3. < block

    wx:for

    “{ {Length}}”

    wx:key

    “item” >

  4. < input

    class

    ‘iptbox’

    value

    “{ {Value.length>=index+1?Value[index]:’’}}” disabled password

    ‘{ {ispassword}}’

    catchtap

    ‘Tap’ > </ input >

  5. </ block >

  6. </ view >

  7. < input

    name

    “password”

    password

    “{ {true}}”

    class

    ‘ipt’

    maxlength

    “{ {Length}}”

    focus

    “{ {isFocus}}”

    bindinput

    “Focus” > </ input >

  8. < view >

  9. < button

    class

    “btn-area”

    formType

    “submit” > Submit </ button >

  10. </ view >

  11. </ form >

js:

[javascript]

  1. Page({
  2. /**
  3. * 页面的初始数据
  4. */
  5. data: {
  6. Length:6, //输入框个数
  7. isFocus: true , //聚焦
  8. Value: "" , //输入的内容
  9. ispassword: true , //是否密文显示 true为密文, false为明文。
  10. },
  11. Focus(e){
  12. var that = this ;
  13. console.log(e.detail.value);
  14. var inputValue = e.detail.value;
  15. that.setData({
  16. Value:inputValue,
  17. })
  18. },
  19. Tap(){
  20. var that = this ;
  21. that.setData({
  22. isFocus: true ,
  23. })
  24. },
  25. formSubmit(e){
  26. console.log(e.detail.value.password);
  27. },
  28. })

wxss:

[css]

  1. .content{
  2. display : flex;
  3. justify- content : space-around;
  4. align-items: center;
  5. margin-top : 200rpx;
  6. }
  7. .iptbox{
  8. width : 80rpx;
  9. height : 80rpx;
  10. border :1rpx solid #ddd;
  11. border-radius: 20rpx;
  12. display : flex;
  13. justify- content : center;
  14. align-items: center;
  15. text-align : center;
  16. }
  17. .ipt{
  18. width : 0;
  19. height : 0;
  20. }
  21. .btn-area{
  22. width : 80%;
  23. background-color : orange;
  24. color :white;
  25. }

三、思路:

1、放置一个输入框,隐藏其文字和位置,同时设置支付输入框(表格)样式

2、当点击输入框时设置输入框为聚焦状态,唤起键盘,点击空白处,失去焦点,设为失去焦点样式,因为输入框宽高为0,所以不会显示输入框和光标,实现隐藏。

3、限制输入框最大字数并且监听输入框状态,以输入框值的长度作为输入框(表格)内容的渲染条件

4、点击提交按钮时,获取输入框内容。