首页 > 其他分享 >vue+ant中input输入框校验,不符合条件的输入无效

vue+ant中input输入框校验,不符合条件的输入无效

时间:2023-04-19 11:22:38浏览次数:34  
标签:parts vue indexOf 小数点 value ant 输入框 slice 输入

1. 只能输入数字/小数点/负号

2. 只能有一个负号, 只能有一个小数点

3. 第一位不能直接输入小数点,输入负号后不能直接跟随小数点

4. 第一位输入为0时或-0时,只能跟随小数点,不能跟随数字 例如01 09

5. 小数点后只能输入两位数字,不可输入其他,并且最后一位不能为0 

6 . 因为是实时校验  如果用户想表示0  直接输入0即可 没必要输入0.00   如果输入0.0以后 那么必定有值 ,最少为0.01   

但是没办法控制用户输入0.0  因为用户可能输入0.01  ,  用户输入0.0  需要后面点击确定或者其他方法校验输入框内容了 

主要是用户输入错误不符合规则的内容 会被直接截取删除   实际给用户展示  就是输入错误的没有反应

 

<template>
  <div class="layout-main-conent">
    <a-input
      v-model:value="values"
      placeholder="Basic usage"
      @input="handleInput"
    ></a-input>
  </div>
</template>

<script lang="ts" setup>
import { ref } from 'vue'
const values = ref('')
const handleInput = (event) => {
  let value = event.target.value
  console.log('value', value)
  value = value.replace(/[^0-9.|-]/g, '')
  if (value.indexOf('-') > 0) {
    value =
      value.slice(0, value.indexOf('-')) + value.slice(value.indexOf('-') + 1)
  }
  // 第一位不能是小数点
  if (value.indexOf('.') === 0) {
    value = value.slice(1)
  }
  // -负数后面不能直接跟随小数点
  if (value.indexOf('-.') === 0) {
    value = value.slice(0, 1)
  }
  // 负数-0后面只能跟随小数点
  if (value.indexOf('-0') === 0) {
    if (value.indexOf('.') !== 2) {
      value = value.slice(0, 2)
    }
  }
  // 正数0后面只能跟随小数点
  if (value.indexOf(0) === 0) {
    if (value.indexOf('.') !== 1) {
      value = value.slice(0, 1)
    }
  }
  if (value.split('-').length - 1 > 1) {
    value = value.slice(0, value.indexOf('-', value.indexOf('-') + 1))
  }
  if (value.split('.').length - 1 > 1) {
    value = value.slice(0, value.indexOf('-', value.indexOf('.') + 1))
  }

  // 最多两位小数
  // 两位小数的最后一位不能是0
  const parts = value.split('.')
  if (parts.length > 1 && parts[1].length > 1) {
    if (parts[1].charAt(1) === '0') {
      value = parts[0] + '.' + parts[1].slice(0,1)
    } else {
      value = parts[0] + '.' + parts[1].slice(0, 2)
    }
  }

  values.value = value
}
</script>

标签:parts,vue,indexOf,小数点,value,ant,输入框,slice,输入
From: https://www.cnblogs.com/baole/p/17332702.html

相关文章

  • 如何在 vue3 中使用 jsx/tsx?
    我们都知道,通常情况下我们使用vue大多都是用的SFC(SignleFileComponent)单文件组件模式,即一个组件就是一个文件,但其实Vue也是支持使用JSX来编写组件的。这里不讨论SFC和JSX的好坏,这个仁者见仁智者见智。本篇文章旨在带领大家快速了解和使用Vue中的JSX语法,好......
  • 【Vue2.x源码系列06】计算属性computed原理
    上一章Vue2异步更新和nextTick原理,我们介绍了JavaScript执行机制是什么?nextTick源码是如何实现的?以及Vue是如何异步更新渲染的?本章目标计算属性是如何实现的?计算属性缓存原理-带有dirty属性的watcher洋葱模型的应用初始化在Vue初始化实例的过程中,如果用户options选......
  • vue3+vite+ts搭建一个基于cesium的gis系统
    使用NPM:bash$npmcreatevite@latest使用Yarn:bash$yarncreatevite使用PNPM:bash$pnpmcreatevite附加的命令行选项#npm6.xnpmcreatevite@latestmy-vue-app--templatevue#npm7+,extradouble-dashisneeded:npmcreatevite@latestmy-vue-a......
  • 伟大思想论文:Cantor–Bernstein-Schröder 定理及其证明简介
    Cantor–Bernstein-Schröder定理及其证明简介1定理简介Cantor–Bernstein-Schröder定理,也称作Schröder–Bernstein定理、Cantor–Bernstein定理,是集合论中的重要定理。它的内容十分简单:如果集合\(A\)到集合\(B\)存在单射,且集合\(B\)到集合\(A\)存在单射,则集合......
  • vue全家桶进阶之路37:Vue3 状态管理
    Vue3的状态管理主要是通过Vuex4来实现。Vuex是一个专为Vue.js应用程序开发的状态管理模式,它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。在Vue3的状态管理中,以下是各个属性的作用:state:存储应用程序中的状态数据。它可以......
  • 【Vue】Vue路由总结
    由vue-router模块控制,需要额外安装依赖。参考官网npminstallvue-router--save组成router-link路由跳转,类似a标签,路由跳转作用<router-linkto=""/>router-view路由视图,用于其他组件在该视图位置显示。<router-viewname="name"/><!--可以指定视图名,在路由跳转时......
  • vue2源码-八、依赖收集的过程
    依赖收集的过程前言使用真实节点替换原始节点,主要涉及以下步骤:1.新老节点的更新方案。2.虚拟节点与真实节点映射。3.实现新老节点的替换。依赖收集已经完成了Vue的两大核心部分:响应式数据和数据渲染,即完成了整个Vue的初始化流程:当newVue()时,执行_init初始化,通过moun......
  • vue03 01.创建项目
    目录01.创建项目打包工具vite介绍安装命令启动项目浏览效果代码目录打包预览运行插件使用01.创建项目打包工具vite官网vite学习视频vite介绍Vite也是前端构建工具相较于webpack,vite采用了不同的运行方式:开发时,并不对代码打包,而是直接采用ESM的方式来,而是直接采用ESM的方式来运行......
  • vue前端实现上传文件,vue 上传文件
     以ASP.NETCoreWebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API,包括文件的上传和下载。 准备文件上传的API #region文件上传可以带参数[HttpPost("upload")]publicJsonResultuploadProject(IFormFilefile,stringuserI......
  • vue
    vuevue使用端口号静态是在static里面index。html不能改变id=app是绑定的一对一绑定webpack学习静态模块打包器到处暴露export,暴露了HelloWorld有暴露就有,导入import安装webpack使用webpack建立一个项目暴露一个方法有暴露就有引入接收,然后调用方法......