elementUI动态嵌套el-form表单校验
创始人
2025-05-30 12:43:44
0

目录

  • 一、基础表单校验
    • 校验规则
      • 必填:required
      • 类型:type
      • 正则验证:pattern
      • 验证前转换:transform
  • 二、动态嵌套表单校验
  • 三、示例源码

一、基础表单校验

前端项目开发过程中表单校验是非常常见的需求,elementUI的el-form组件也是支持配置rules属性来配置表单项的校验。

Form 组件允许你验证用户的输入是否符合规范,来帮助你找到和纠正错误。
Form 组件提供了表单验证的功能,只需为 rules 属性传入约定的验证规则,并将 form-Item 的 prop 属性设置为需要验证的特殊键值即可。

例如:
在这里插入图片描述
不要漏掉el-from-item的prop属性,需要和rules对象中的属性字段对应。
定义rules对象:
在这里插入图片描述
提交表单时验证规则:
校验是通过调用表单实例(表单组件上的ref属性绑定的变量)上的validate方法来实现的(异步)
在这里插入图片描述
这样,在我们进行验证时,如果表单项不符合rules中的规则,那么就会在对应的表单项下面提示我们设定的提示信息。
在这里插入图片描述

校验规则

elementUI中el-from校验的规则是引用的https://github.com/yiminghe/async-validator
比较常用的规则属性有:

必填:required

可以赋值一个boolean值,true表示必填。

类型:type

赋值有一个字符,表示要验证的内容的类型:string、number等,详情见下图:
在这里插入图片描述

正则验证:pattern

如果对于type无法验证的值,我们可以使用pattern赋值一个正则表达式来更加灵活的验证规则。

验证前转换:transform

有时有必要在验证之前转换一个值,可以使用tansform属性,是一个函数,参数是要验证的值,该函数的返回值是处理后再验证的值。

例如上面代码name的校验中就用到了这几个属性,其中transform会将用户输入的内容去掉字符串首位空格(trim方法)后再进行其他规则验证。

 name: {type: 'string',required: true,pattern: /^[a-z]+$/,transform(value) {return value.trim();},}

二、动态嵌套表单校验

了解了基础的表单校验,那么有的时候会遇到比较复杂的表单对象,并且可能需要动态增加表单项。
elementUI官网给出了一个比较简单的例子:添加/删除表单项
在此基础上,我增加了一下表单对象的复杂度。
在这里插入图片描述
可以看到,domains数组每个对象下包含了info对象属性,info对象下有name和intro属性,是一个嵌套的对象,并且我们可以动态的新增和删除domains中的对象,那么在表单中该如何验证呢?

本质上,检验是通过设置的rules对象中的属性,去匹配表单项上设置的prop,然后对双向绑定的内容进行验证。

首先,我们设置rules对象:
在这里插入图片描述
直接按照表单对象的层级设置属性即可,因为domains数组中的对象肯定是公用一套规则的。
在这里插入图片描述
可以看到,我们直接循环domains数组,然后通过设置prop="'domains.' + index + '.value'"来实现数组中的每个对象独立校验。
接着我们还要在每个表单项el-form-item上定义对应的rules,就能达到新增的表单项也能够校验的目的了。
效果:
在这里插入图片描述

三、示例源码

代码基于vue3 + ts,项目中如果安装并注册了elemetPlus,可以直接cv查看效果。


相关内容

热门资讯

【操作系统复习】第2章(Par... 第2章(Part II)进程的描述与控制冯诺依曼体系结构:...
Web前端学习:章四 -- J... 106:for循环深入 1、标准格式: for(初始化条件;判断条件;迭...
精神病人扰民困境:自由与安全的... 2025 年 5 月,吉林松原的刁先生向荔枝新闻讲述了自家长达两年多的困扰。自 2022 年 12 ...
关于glibc的若干问题总结 今天在学习C的库函数memchr时,想看看其实现的源码,所以去网上下载了...
Macs Fan Contro... Macs Fan Control Pro是一款非常实用的软件,尤其适合需要长时间使用M...
【Java JVM基本问题】记... 文章目录JVM系统结构JVM运行程序Java对象回收双亲委派模型JVM沙箱安全机制OOM分析与调优J...
基于java+SpringBo...  博主介绍:专注于Java技术领域和毕业项目实战 🍅文末获取源码联系&...
Python字典dict基础学... #字典表达 # 字典名={}或者字典名=dict()# 字典名={key:...
数据结构——图 图的定义         图是由顶点的有穷非空集合和顶点之间边的集合组成的,通常表示为...
java面试中和String有... 文章目录1. String 属于基础的数据类型吗?2. String str=...