【IP地址】输入小数点,自动移到下一输入框

1. 实现效果

输入框最多只能输入三位数字(0-255),按下. 光标会自动跳转到下一个输入框。
在这里插入图片描述

2. 实现过程

  • 给输入框的值绑定一个数组(有4个元素), v-for 遍历生成输入框。
  • 通过动态ref绑定每一个输入框ref
  • 监听输入框是否有输入. ,有就让下一个输入框dom元素获得焦点
<template>
   输入IP
        <el-input
          v-for="(item, i) in convertState.ip"
          :key="i"
          :ref="(e: any) => (numInputRefs[i] = e)"
          v-model="convertState.ip[i]"
          :controls="false"
          class="w-55"
          @input="handleInput(i)" />
</template>

<script setup lang="ts">
import {
      InputInstance } from 'element-plus';
// numInputRefs 是一个对象,存储多个ref,键名是索引,值是input实例
const numInputRefs = reactive<Record<number, InputInstance>>({
     });

// 输入框绑定的值
const convertState = reactive({
     
  ip: ['', '', '', ''],
});

// 输入时触发
const handleInput = (i) => {
     
  const val = convertState.ip[i];
  // 只允许数字和 .
  if (!val.match(/[0-9.]/)) {
     
    convertState.ip[i] = val.replace(/[^0-9.]/g, '');
  }
  if (Number(val) < 0) return (convertState.ip[i] = '0');
  if (Number(val) > 255) return (convertState.ip[i] = '255');

  if (val.includes('.')) {
     
    if (i < convertState.ip.length - 1) {
     
      // 前三个.跳转
      convertState.ip[i] = val.slice(0, -1);// 输入框移除.
      _.get(numInputRefs, i + 1).focus();// 下一个输入框获得焦点
    } else {
     
      convertState.ip[i] = val.slice(0, -1);
    }
  }
};
</script>

这里的完整需求是通过输入ip地址和子网掩码计算ip起始和结束地址,这个实现过程后面再放一篇~

最近更新

  1. TCP协议是安全的吗?

    2024-01-06 03:40:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-06 03:40:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-06 03:40:06       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-06 03:40:06       20 阅读

热门阅读

  1. Vue生成Canvas二维码

    2024-01-06 03:40:06       36 阅读
  2. 高德地图信息窗体设置

    2024-01-06 03:40:06       46 阅读
  3. 【unity】屏幕事件

    2024-01-06 03:40:06       40 阅读
  4. 最大似然与交叉熵之间的关系以及互相推导过程

    2024-01-06 03:40:06       37 阅读
  5. 测试:常见的虚拟机命令

    2024-01-06 03:40:06       28 阅读
  6. OpenCV-Python(28):基于GrabCut 算法交互式前景提取

    2024-01-06 03:40:06       39 阅读
  7. 宝塔安装的imagemagick不能用,必须自己手动安装

    2024-01-06 03:40:06       43 阅读
  8. 企业怎么打造私域转化闭环?

    2024-01-06 03:40:06       40 阅读
  9. CodeBus投稿落选代码——瓦片地图粗糙版 记录

    2024-01-06 03:40:06       40 阅读