美文网首页
Vue 标签 实现六格验证码输入框

Vue 标签 实现六格验证码输入框

作者: AR7_ | 来源:发表于2019-11-14 14:38 被阅读0次

前言

现在的需求就是要实现一个六格验证码输入框,本来想直接在网上找现成的轮子的,但是找了一圈没发现可以让我满意的,那就试着自己摸索了。

功能需求

其实,除了样式需要处理,主要是有以下三点需求:

  • 只支持纯数字输入,我们知道如果input设置typenumber时,其实是可以输入自然常数e这个英文字母的,而且对于处理这种纯数字输入,如果处理不当,在中文模式下打出拼音,这时切换中英文经常出现输入了英文字母的现象。
  • 在前一个输入框输入完成,光标自动移动至下一个输入框。
  • 按下BackSpace键,清空当前输入框内容,光标自动移动至上一个输入框。

代码实现

<template>
  <div class="six-digit-wrapper">
    <input v-for="(item,index) in digits"
           :key="index"
           :ref="`ref${index}`"
           class="input"
           v-model="item.value"
           type="text"
           oninput="value=value.replace(/[^\d]/g,'')"
           @input="onInput(index)"
           @keyup.delete="onDelete(index)"
           maxlength="1" />
  </div>
</template>
<script>
export default {
  data () {
    return {
      digits: [
        {
          value: ''
        },
        {
          value: ''
        },
        {
          value: ''
        },
        {
          value: ''
        },
        {
          value: ''
        },
        {
          value: ''
        }
      ]
    }
  },
  methods: {
    onInput (index) {
      // index < 5 ,如果是第6格,不触发光标移动至下一个输入框。
      if (this.digits[index].value && index < 5) {
        this.$refs['ref' + (index + 1)][0].focus()
      }
    },
    onDelete (index) {
      // 如果是第1格,不触发光标移动至上一个输入框
      if (index > 0) {
        this.$refs['ref' + (index - 1)][0].focus()
      }
    }
  }
}
</script>
<style lang="less" scoped>
.six-digit-wrapper {
  display: flex;
  flex-direction: row;
  .input {
    display: flex;
    width: 25px;
    margin-left: 10px;
    height: 44px;
    font-size: 18px;
    color: #333333;
    background-color: #f2f2f2;
    text-align: center;
    outline: none; // 去除选中状态边框
    border: solid 1px #d2d2d2;
    border-top: 0px;
    border-left: 0px;
    border-right: 0px;
  }
}
</style>

相关文章

  • Vue 标签 实现六格验证码输入框

    前言 现在的需求就是要实现一个六格验证码输入框,本来想直接在网上找现成的轮子的,但是找了一圈没发现可以让我满意的,...

  • Vue2.0 了解一下

    什么是 Vue Vue 是一个前端框架,特点是数据绑定 比如你改变一个输入框 Input 标签的值,会自动同步更新...

  • 关于 vue.js 运行环境的搭建(mac)

    什么是 Vue Vue 是一个前端框架,特点是 数据绑定 比如你改变一个输入框 Input 标签的值,会自动同步更...

  • input和textarea的区别

    都是提供用户输入的标签。区别如下: input 单行文本输入框 textarea多行文本输入框 input tex...

  • 前端实现图片上传预览转换base64

    前端实现文件的上传,就必须用到input标签,type属性为file。在vue项目中通ref操作dom。input...

  • vue 改变value 触发 v-model问题

    原生input 输入框 新建一个vue.directive该指令限制输入框只能有指定位数的数字 input + b...

  • 在input里,name属性的作用

    input标签 标签用于在表单建立一个简单的输入框,属于自闭和标签。input 标记是放在表单 之间的,用来在表...

  • vue.js 入门

    简介 Vue 是一个当下使用比较多的前端js框架,具有以下特点 数据绑定改变一个输入框 Input 标签的值,会自...

  • 第三章 表单 3-4 表单控件

    1、输入框inputbootstrap通过对input标签的type属性进行识别,得到相应的格式,所以input标...

  • vue实现文件上传

    本文主要介绍input标签实现的文件上传 input 标签上传也有两种写法 一、隐藏input标签 将input标...

网友评论

      本文标题:Vue 标签 实现六格验证码输入框

      本文链接:https://www.haomeiwen.com/subject/uujrictx.html