关于elementui表单验证数字的问题

千里之行始于足下

熟能生巧,不熟怎么生巧

最近编写项目时候遇到一个这样的问题,elementui 表单验证价格是否为数字,

正常来说只需要将规则写为如下

javascript 复制代码
 { required: true, type: 'number', message: "请填写正确的数字", trigger: "blur" },

并且给v-model 加上.number修饰符,即可,但是我遇到这样一种情况

如果为修改情况,将获取到的值赋予给form组件后,提交修改会触发验证失败问题,才知道,number修饰符是在修改值时候才会触发,也就是一开始赋予的值是一个数字字符串,并没有被转换,而验证规则要求是一个数字,而非数字字符串,进而无法通过验证

一开始我是这样想着洁解决的:

1、在赋予表单值时候,将里边的数字字符串转为数字

2、自定义验证规则

javascript 复制代码
const validatePrice = (rule: any, value: any, callback: any) => {
  const reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/;
  if (reg.test(value)) {
    callback();
  } else {
    return callback(new Error("请填写正确的数字"))
  }
}

3、最终发现问题应该出在数据库表设计的不合理上,将price类型修改为float即可,这样子就没必要写多余的验证器了,但是如果想验证是否为大于0 的合规的价格,也可以做验证 (验证器也有方法可以设置,设置规则当中min即可)

相关推荐
夜焱辰1 天前
浏览器端 Agent 的文件版本管理:不用 Git,基于 OPFS + SQLite 自己造了一个
前端·人工智能
梦想的颜色1 天前
TypeScript 完全指南(下):从类型体操到生产级配置
前端·javascript·typescript
Hi~晴天大圣1 天前
npm使用介绍
前端·npm·node.js
888CC++1 天前
如何在 C 语言中进行程序调试?
前端·javascript·算法
喵个咪1 天前
基于 Taro 的 Headless CMS 多端前端架构:技术解析与二次开发导引
前端·react.js·taro
狂炫冰美式1 天前
你还在古法PPT吗,试试HTML呢?免费编辑导出工具给 xdm 放这了
前端·后端·github
万少1 天前
未来组织的分水岭不是员工数量,而是人才密度
前端·后端·面试
任磊abc1 天前
nextjs16配置eslint+prettier
前端·eslint·nextjs·prettier
x***r1511 天前
Another-Redis-Desktop-Manager.1.3.7安装步骤详解(附Redis可视化连接与Key管理教程)
前端·bootstrap·html
Captaincc1 天前
你真的知道自己把 AI 用在了哪里吗?这是 Vibe Usage 想回答的问题
前端·vibecoding