当前位置: 首页 > news >正文

非负数(0和正数) 限制最大值且保留两位小数,在elementpuls表单中正则自定义验证传更多参数

在这里插入图片描述
在这里插入图片描述
一、结构

<el-form-item label="单价:" prop="price"><el-inputv-model.trim="formData.price"placeholder="请输入"><template #append>()</template></el-input></el-form-item>

在这里插入图片描述

二、验证方法:


// 自定义验证方法(**1、自定义验证方法的使用**)
var numbMethod=(rule, value, callback)=>{const reg = /^(?!(0[0-9]{0,}$))[0-9]{1,}[.]{0,}[0-9]{0,}$/; //非负数/^\d+.?\d{0,2}$/;if (!value) {callback(new Error('请输入'))} else if (!Number(value) && value!="0"&&value!=0) {callback(new Error('请输入数字值'))} else {if (reg.test(value)) {if(value > 9999.99){callback(new Error('数量不能超过9999.99'))}callback()} else if(Number(value) ==0){callback()} else {callback(new Error('请输入正确数字'))// callback(new Error('小数点后最多只能输入两位'))}}
}// 自定义验证方法(**2、自定义验证且添加除了rule, value, callback以外参数的方法使用**)
// 数值验证0+正数(正整数,正小数)小数点两位小数验证
// maxVal传递最大值参数 
const numberMethod=(rule, value, callback, maxVal)=>{const reg = /^(0|[1-9]\d{0,5})(\.\d{1,2})?$/; const strValue = String(value);if (!value) {callback(new Error('请输入'));} else if (isNaN(value)) {callback(new Error('请输入正确的数值'));} else if (strValue.includes('+')) {callback(new Error('输入有误,请不要输入加号'));} else {const floatValue = parseFloat(value); // 将输入值转换为浮点数if (floatValue < 0) {callback(new Error('数值不能为负数'));} else {// 检查小数位数const stringValue = value.toString();if (stringValue.includes('.')) {const decimalPart = stringValue.split('.')[1];if (decimalPart.length > 2) {callback(new Error('小数点后最多只能输入两位'));return;}else if(decimalPart.length<1){callback(new Error('小数点后不能为空'));return;}}// 检查数值范围if (floatValue > maxVal) {callback(new Error(`数字最大不得超过${maxVal}`));return;}callback();}}
}

三、在elementplus表单验证中调用验证方法:

rules: {//number:[{ required: true, validator: numberMethod, trigger: 'blur' }],// 数量 非负数 1、自定义验证方法的使用price: [{required: true, message: '单价不能为空', trigger: 'blur'},{ required: true, validator:(rule, value, callback) => {priceMethod(rule, value, callback, 9999999.99)}, trigger: 'blur' }],
number:[{required: true, message: '数量不能为空', trigger: 'blur'},// trigger:['blur','change'] 实时检测是否查出最大值且鼠标失去焦距时也检测是否超最大值(防止失去焦距时验证失效){ required: true, validator:(rule, value, callback) => {priceMethod(rule, value, callback, 9999.99)}, trigger: ['blur','change'] }// 数量 非负数 2、自定义验证且添加除了rule, value, callback以外参数的方法使用],price: [{required: true, message: '单价不能为空', trigger: 'blur'},// trigger:['blur','change'] 实时检测是否查出最大值且鼠标失去焦距时也检测是否超最大值(防止失去焦距时验证失效){ required: true, validator:(rule, value, callback) => {priceMethod(rule, value, callback, 9999999.99)}, trigger: ['blur','change'] }// 单价 非负数 2、自定义验证且添加除了rule, value, callback以外参数的方法使用],amount:[{required: true, message: '金额不能为空', trigger: 'blur'},// 由于amount值 = number * price,且amount设置了disabled(不可编辑,只能根据计算属性得出,没有失去焦距一说)故此trigger: 'change'只需在改变时校验是否查出最大值即可{ required: true, validator:(rule, value, callback) => {priceMethod(rule, value, callback, 999999999.99)}, trigger: 'change' }// 金额 非负数 2、自定义验证且添加除了rule, value, callback以外参数的方法使用],remark:[{ required: true, message: "请输入", trigger: "blur" },{min: 1,max: 100,message: "长度在 1 到 100 个字符",trigger: "blur",},],},

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Linux驱动开发基础(Hello驱动)
  • Python 深度学习调试问题
  • 移动端上拉分页加载更多(h5,小程序)
  • Github 2024-08-10 Rust开源项目日报Top10
  • 《嵌入式驱动面试常见问题攻略》
  • 无字母数字的绕过方法
  • 【数据结构】队列篇
  • 【如何有效解决前端Vue中的常见难题】
  • zdpgo_gin_limit 为zdpgo_gin打造的接口限流框架,当API接口需要限制访问频率的时候可以使用此框架
  • 公主少爷都爱看的haproxy七层代理详细介绍及常见实验详解
  • 学懂C++ (十九):高级教程——深入详解C++信号处理
  • 初识C++ · C++11(2)
  • 若依 ruoyi 单体双token(url区分)
  • Linux 软件编程学习第十一天
  • 使用RPC服务的步骤
  • es6(二):字符串的扩展
  • ES6简单总结(搭配简单的讲解和小案例)
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • IP路由与转发
  • Python语法速览与机器学习开发环境搭建
  • ubuntu 下nginx安装 并支持https协议
  • vue数据传递--我有特殊的实现技巧
  • 爱情 北京女病人
  • 彻底搞懂浏览器Event-loop
  • 对超线程几个不同角度的解释
  • 聊一聊前端的监控
  • 那些年我们用过的显示性能指标
  • 如何实现 font-size 的响应式
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 深度学习入门:10门免费线上课程推荐
  • 深度学习在携程攻略社区的应用
  • 事件委托的小应用
  • 小李飞刀:SQL题目刷起来!
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 主流的CSS水平和垂直居中技术大全
  • 1.Ext JS 建立web开发工程
  • gunicorn工作原理
  • Java总结 - String - 这篇请使劲喷我
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (BAT向)Java岗常问高频面试汇总:MyBatis 微服务 Spring 分布式 MySQL等(1)
  • (day18) leetcode 204.计数质数
  • (ZT)出版业改革:该死的死,该生的生
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (阿里云万网)-域名注册购买实名流程
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (七)Knockout 创建自定义绑定
  • (转)Linux下编译安装log4cxx
  • ./configure,make,make install的作用
  • .bat批处理(六):替换字符串中匹配的子串
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .net core Redis 使用有序集合实现延迟队列
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .net SqlSugarHelper
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)