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

element-plus中,表单校验的使用

目录

一.案例1:给下面的表单添加校验

1.目的要求

2.步骤

①给需要校验的el-form-item项,添加prop属性

②定义一个表单校验对象,里面存放了每一个prop的检验规则

③给el-form组件,添加:rules属性

④给el-form组件,添加ref属性,以便后面获取表单实例

⑤在代码中,定义该表单实例

⑥点击【确认添加】按钮时,通过表单实例查看表单是否符合校验规则。如果符合,则向后端发送请求;如果不符合,则不发送请求并提示相关信息

3.效果展示

4.注意事项

5.结合已写好的后端接口,展示整体效果

二.上述例子存在的问题

1.当取消对话框后,再打开对话框,表单的校验状态依然存在

2.对于上述案例的金额一项,校验不充分

结语


一.案例1:给下面的表单添加校验

1.目的要求

2.步骤

①给需要校验的el-form-item项,添加prop属性

②定义一个表单校验对象,里面存放了每一个prop的检验规则

//表单检验规则  
const rules = ref(
  {
    name: [
      { required: true, message: '请输入医技项目名称', trigger: 'blur' },//类型为输入框时,触发校验的时机应该是blur:失去焦点
    ],
    unit: [
      { required: true, message: '请选择单位', trigger: 'change' },//类型为选择框时,触发校验的时机应该是change:选项改变
    ],
    price: [
      { required: true, message: '请输入单价', trigger: 'blur' },
    ],
    expTypeId: [
      { required: true, message: '请选择费用类型', trigger: 'change' },
    ],
    deptId: [
      { required: true, message: '请选择执行科室', trigger: 'change' },
    ],
    recordType: [
      { required: true, message: '请选择项目类型', trigger: 'change' },

    ],
  }
)

③给el-form组件,添加:rules属性

④给el-form组件,添加ref属性,以便后面获取表单实例

⑤在代码中,定义该表单实例

//获取表单组件的引用
const itemDtoRef = ref();//该变量名必须等于el-form的ref属性值,才能获取到表单实例。

⑥点击【确认添加】按钮时,通过表单实例查看表单是否符合校验规则。如果符合,则向后端发送请求;如果不符合,则不发送请求并提示相关信息

3.效果展示

校验没通过时:

校验通过时:

4.注意事项

①prop如何命名?【十分重要】

el-form-item的prop属性,应当依据要提交的对象来决定,如下:

②表单实例(即表单的ref属性值对应的对象,此处为itemDtoRef )有很多方法,如下:

5.结合已写好的后端接口,展示整体效果

将后端逻辑相关代码,添加到下面的地方:

展示完整效果:

二.上述例子存在的问题

1.当取消对话框后,再打开对话框,表单的校验状态依然存在

问题如下:

解决方案:在对话框的关闭事件中,使用表单实例的clearValidate方法,将表单的校验状态清空即可。如下:

展示改进后的效果:

2.对于上述案例的金额一项,校验不充分

问题描述:对于上述案例中,我们只校验了【单价】是否为空,显然这是不充分的,而是还需要验证单价:是否是数字、不能是负数、不能以0开头、最多有两位小数。

实现步骤:

①自定义【单价】的校验规则

//自定义校验规则(校验【单价】)
const validateAmount = (rule, value, callback) => {
  if (value === '' || value === undefined || value === null) {
    callback(new Error('金额不能为空'));
    return;
  }
  // 校验是否为数字
  if (isNaN(value)) {
    callback(new Error('金额必须为数字'));
    return;
  }
  // 校验是否为负数
  if (Number(value) < 0) {
    callback(new Error('金额不能为负数'));
    return;
  }
  // 校验是否以 0 开头(除非金额为 0)
  if (value !== '0' && value.startsWith('0')) {
    callback(new Error('金额不能以 0 开头'));
    return;
  }
  // 校验小数位数(如最多 2 位小数)
  const decimalPart = value.toString().split('.')[1];
  if (decimalPart && decimalPart.length > 2) {
    callback(new Error('金额最多保留 2 位小数'));
    return;
  }
  // 校验通过
  callback();
};

 ②将上述【单价】的自定义校验规则,添加到表单校验规则rules中的单价属性中。

效果展示:

结语

以上就是表单校验的基本流程介绍,还算比较详细。

若有不懂的地方,可以私信博主(有空就会回复ou)。

喜欢本篇文章的话,可以留个免费的关注~~

http://www.dtcms.com/a/109457.html

相关文章:

  • HCIP-8 ospf静默接口,ospf树
  • 用Python和Pygame创造粉色粒子爱心:3D渲染的艺术
  • 《AI大模型应知应会100篇》第56篇:LangChain快速入门与应用示例
  • VTK 各个点颜色的设置
  • 289.将所有数字用字符替换
  • 栈容器的应用
  • 代码随想录|动态规划|17一和零
  • DAY 35 leetcode 202--哈希表.快乐数
  • QT 非空指针 软件奔溃
  • 检索增强生成(RAG) 优化策略
  • LLM架构解析:长短期记忆网络(LSTM)(第三部分)—— 从基础原理到实践应用的深度探索
  • MyBatis:开源、轻量级的数据持久化框架
  • 游戏引擎学习第201天
  • Muduo网络库实现 [九] - EventLoopThread模块
  • 康谋分享 | 仿真驱动、数据自造:巧用合成数据重构智能座舱
  • 去中心化交易所(DEX)
  • Unity3D开发AI桌面精灵/宠物系列 【三】 语音识别 ASR 技术、语音转文本多平台 - 支持科大讯飞、百度等 C# 开发
  • 【GCC警告报错4】warning: format not a string literal and no format arguments
  • 从扩展黎曼泽塔函数构造物质和时空的结构-13
  • 练习题:120
  • 【Linux学习笔记】开发工具git和gbd和cgbd的介绍和使用
  • PADS 9.5【附破解文件+安装教程】中文激活版下载
  • IP分片攻击实战模拟
  • 蓝桥杯真题——传送阵
  • xsync脚本是一个基于rsync的工具
  • LN2220 2A 高效率升压 DC/DC 电压调整器
  • 前端面试题(二):vue2中v-if和v-show的区别
  • 使用python完成手写数字识别
  • 列表某个字段由多个值组成,使用id匹配展示
  • Angular 项目 PDF 批注插件库在线版 API 示例教程