element form 自定义校验

element-ui 表单校验总结

作为一名前端开发,会遇到各种各样的表单处理。为了给用户更好的体验,行内表单校验及错误展示被广泛使用。由于工作中用到element-ui较多,所以这里简单谈一谈日常工作遇到的【有意思】的表单交互。

element-ui官网链接: https://element.eleme.cn/#/zh-CN/component/form, 简单的表单校验可以直接参考官网套着用

实现原理

  1. 基于 el-form-item 下面的表单项做校验,而不是基于 prop
  2. 嵌套校验为啥需要”…“字符串拼接的语法

一行多交互框

在这里插入图片描述

这种交互的特点是同一个label下有多个关联的输入框,改变的时候需要校验彼此

// template
<el-form-itemlabel="区间":rules="[{ validator: numValidator, trigger: ['blur', 'change'] }]"><el-input-numberv-model="form.values.min" /> ~<el-input-numberv-model="form.values.max" />
</el-form-item>// script
{data() {return {form: {values: {min: 0,max: 10}}}},methods: {numValidator(rule, value, callback) {const { min, max } = this.form.values;if (min > max) {callback(new Error(""));return;}callback();}}
}

多行多交互框

这种交互是上一个的升级版,放在这里单独拿出来,是为了突出一下 validator 传参。基于validator传参可以更 优雅 的实现复用

// template
<el-form-itemlabel="区间1":rules="[{ validator: numValidator.bind(this, {text: '区间1'}), trigger: ['blur', 'change'] }]"><el-input-numberv-model="form.values1.min" /> ~<el-input-numberv-model="form.values1.max" />
</el-form-item>
<el-form-itemlabel="区间2":rules="[{ validator: numValidator.bind(this, {text: '区间2'}),, trigger: ['blur', 'change'] }]"><el-input-numberv-model="form.values2.min" /> ~<el-input-numberv-model="form.values2.max" />
</el-form-item>// script
{data() {return {form: {values1: {min: 0,max: 10},values2: {min: 0,max: 10}}}},methods: {numValidator({text}, rule, value, callback) {const { min, max } = this.form.values;if (min > max) {callback(new Error(`${text}开始限制不能大于结束限制`));return;}callback();}}
}

循环嵌套表单

这里没有图

这种也很常见,表单的数量不定,表单下的交互项数量也不定

// script
forms: [{name: '',children: [{key1: '',key2: ''},{key1: '',key2: ''},]},{name: '',children: [{key1: '',key2: ''}]},
]// template
<template v-for="form in forms"><el-form:model="form"><el-form-item label="名称"prop="name"><el-input v-model="form.name" />  </el-form-item><template v-for="(item, idx) in form.children"><el-form-item :label="'字段1_' + (idx + 1)":prop="'form.children.' + idx + '.key1'":rules="[{ required: true, message: '字段不能为空', trigger: ['change', 'blur'] }]"><el-input v-model="item.key1" />  </el-form-item><el-form-item :label="'字段2_' + (idx + 1)":prop="'form.children.' + idx + '.key2'":rules="[{ required: true, message: '字段不能为空', trigger: ['change', 'blur'] }]"><el-input v-model="item.key2" />  </el-form-item></template></el-form></template>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/549704.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过避免下列 10 个常见 ASP.NET 缺陷使网站平稳运行(转)

本文将讨论&#xff1a; • 缓存和 Forms 身份验证 • 视图状态和会话状态 • 配置文件属性序列化 • 线程池饱和 • 模拟和设置配置文件 本文使用了下列技术&#xff1a; .NET Framework、ASP.NET、Windows Server 2003 本页内容 LoadControl 和输出缓存会话和输出缓存Fo…

cocos2d-x 3.0 alpha1 生成Qt qch帮助文档

Qt的助手挺好用的. 比chm好多了 cocos2d-x使用doxygen生成文档. 默认生成的是html形式, 需要打开浏览器, 这个是比较耗资源吧 可以修改配置, 让doxygen同时输出qch形式的帮助文档 打开 \cocos2d-x-3.0alpha1\docs\doxygen.config 修改其中几项: GENERATE_QHP YESQHP_NAMESPA…

如何去掉DataTable中的重复行(新增.net 2.0中最新解决方法---简便)

.net 1.1中的解决方法(转)1建立一个DataSetHelper类(DataSetHelper.cs) publicclassDataSetHelper...{ public DataSet ds; public DataSetHelper(ref DataSet DataSet) ...{ ds DataSet; } public DataSetHelper() ...{ ds null; } p…

AngularJS中巧用ngModel的$asyncValidators属性写一个验证唯一性的Direcitve

有这样的一个需求&#xff1a;添加用户的时候&#xff0c;根据主键判断当前添加用户的email是否已经被使用。为此&#xff0c;我们需要把主键和email来传递给远程的一个API&#xff0c;让API返回结果&#xff0c;告之当前email是否被使用过。写一个验证email唯一性的Directive&…

ASP技巧:在Access数据库中重命名表

下面代码是用Adox重命名Access表名的示例代码&#xff1a; Dim Conn,ConnStr,oCat,oTbl ConnStr "ProviderMicrosoft.Jet.OLEDB.4.0;Data Source" & Server.MapPath("data.mdb") Set oCatServer.CreateObject("ADOX.Catalog") oCat.Active…

Centos 系统安装NetCore SDK命令以及一系列操作(2)

ok,接下来安装dotnetCore的SDK&#xff0c;访问&#xff1a;https://dotnet.microsoft.com/download&#xff0c; 如下图&#xff0c;选择Linux&#xff0c; 选择一下这个Linux的发行版&#xff0c;我们选择Centos就行&#xff0c;然后执行这些命令去安装SDK&#xff0c;地址如…

这该死的高度,height,clientHeight,scrollHeight,offsetHeight

引言: 虽然有时候界面的设置不是我们这些后台代码人员的工作,但是有时候却难以理解控件生成时的一些怪事,比方在学习webabcd的扩张GridView中固定列时,你或许已经被其中的height,clientHeight,scrollHeight,offsetheight弄得晕晕的了,当然这些都是网页制作的一个基础,将其记下,…

C#高级语法基础知识总结6——字符串集合

字符串 集合 列表声明 Var intListnew List<int>();Var racersnew List<Racer>();List<int> intListnew List<int>(10);//大小为10&#xff0c;倍数增加 使用Capacity属性可以获取和设置集合的容量 使用Count属性可以获取集合的元素个数 Add()方法添加…

瓦尔都窗前的一瞥 ①

面对着围着哥本哈根的、生满了绿草的城堡&#xff0c;是一幢高大的红房子。它的窗子很多&#xff0c;窗子上种着许多凤仙花和青蒿一类的植物。房子内部是一副穷相&#xff1b;里边住的也全是一些穷苦的老人。这就是“瓦尔都养老院”。  看吧&#xff01;一位老倚着窗槛站着&a…

浏览器播放rtsp视频流方案(vlc转http方案)

一.vlc播放器转成http&#xff0c;在浏览器用video标签播放 1.下载vlc播放器 网址:https://www.videolan.org/ 2.安装并打开之后&#xff0c;点击媒体 3.点击打开网络串流&#xff0c;进入到下个页面&#xff0c;在输入框输入自己的rtsp流 4.点击播放旁边的小三角号&#xff0c…

qsort和sort的区别 转载

qsort和sort的区别 First qsort 基本快速排序的方法&#xff0c;每次把数组分成两分和中间的一个划分值&#xff0c;而对于有多个重复值的数组来说&#xff0c;基本排序的效率较低。集成在C语言库函数里面的的qsort函数&#xff0c;使用 三 路划分的方法解决这个问题。所谓三路…

浏览器播放rtsp视频流方案(ffmpeg + nginx转m3u8)

1.下载ffmpeg &#xff0c;传送门&#xff1a;https://ffmpeg.en.softonic.com/ 2.配置环境变量 右击我的电脑---->点击属性&#xff0c;打开左侧高级系统设置 点击下方的环境变量 在下方系统变量中找到path变量&#xff0c;选中点击下方编辑&#xff0c;别点成删除&#…

RIA说文解字

微软 WPF/Sliverlight Adobe AIR&#xff08;Adobe Integrated Runtime&#xff09; Java JavaFX 三种主流RIA开发平台评测报告 评测对象为Adobe Flex&#xff0c;微软的ASP.Net AJAX和Curl RIA平台。 测试发现&#xff0c;ASP.Net AJAX尤其适合B2C也即商家对消费者&#xff08…

酒桌游戏

酒桌游戏 酒桌上&#xff0c;敬酒是比较通俗的方式&#xff0c;但是敬酒就会产生 求人与被求人 的关系。同是同学。可能还是游戏的方式放松些~ 抽手游戏 大家把手伸出来&#xff0c;数1&#xff0c;2&#xff0c;3~~~ 最后一个人&#xff0c;喝酒 两人同叫&#xff0c;两人喝酒…

浏览器播放rtsp视频流方案(ffmpeg + nginx转rtmp)

之前已经更新vlc和m3u8的方案了&#xff0c;这个是最后一个方案&#xff0c;同时&#xff0c;转rtmp的方案也是我在用的 1.下载ffmpeg &#xff0c;传送门&#xff1a;https://ffmpeg.en.softonic.com/ 2.配置环境变量 右击我的电脑---->点击属性&#xff0c;打开左侧高级…

由Dvbbs PHP 0day引发的争论

由Dvbbs PHP 0day引发的争论昨天刚刚得到Dvbbs PHP 0day 的资料&#xff0c;看来还是晚了&#xff0c;今天无意间发现了有趣的事情&#xff0c;所以就给大家贴出来。呵呵漏洞给大家播报下Dvbbs PHP 0day影响版本&#xff1a;2.0漏洞文件&#xff1a;/boardrule.phpAuthor&#…

图形学中的 显示表示 和 隐式表示

简介 The two most common methods of representing curves and surfaces in geometric modeling are implicit equations and parametric functions.// 两个最基础的方法在表示曲面和形状在几何建模是隐式表示和显示表示 隐式表示 The implicit equation of a curve lying in …

uniapp+typeScript+vue3.0+vite

最近公司需要开发新版小程序&#xff0c;思考了一下&#xff0c;决定还是用最新的技术进行开发&#xff0c;同时也能锻炼到自己&#xff0c;废话不多说&#xff0c;开搞&#xff1a; 一.首先打开uniapp的官网&#xff1a;uni-app官网 //环境安装 //全局安装vue-cli npm instal…

纪中七日游——总结篇 DAY1AB

DAY 1 B 组 T1 游戏 Description Alice和Bob在玩一个游戏&#xff0c;游戏是在一个N*N的矩阵上进行的&#xff0c;每个格子上都有一个正整数。 当轮到Alice/Bob时&#xff0c;他/她可以选择最后一列或最后一行&#xff0c;并将其删除&#xff0c; 但必须保证选择的这一行或这一…

做返回功能的醒悟

以前做返回是先取得跳转到本页面的地址&#xff08;后台方法 Request.ServerVariables["HTTP_REFERER"] 还可以是Request.UrlReferrer等&#xff09;&#xff0c;然后再跳转到原页面作返回功能今天遇外发现JS有个方法javascript:history.back(1);&#xff0c;可以实现…