el-mement表单校验-校验失败时自动聚焦到失败的input框

思路:调用input的focus()事件,聚焦到失败的input框上,
问题:如何获取失败的input框,结合element的校验方法,查看可以提供入口的地方
调用this.$refs[formName].validate()时的具体操作:

field信息:

内部‘field’信息:

验证失败的返回值invalidFields信息:

问题:如何根据校验失败的field定位到相应的input框?
返回的校验失败的对象信息,只包含了prop的名字和失败的提示信息,根据这两项无法获取到对应的input框(ps:此时不知道如何利用返回的invalidFields的信息跟组件进行绑定)
第一次尝试
仿照form.validate()方法重写一个验证,获取所有的fields,同样是循环遍历调用field.validate()方法,在某个field验证失败时,自动聚焦到此input框上

此时的field是el-form-item组件,只有一个child就是el-input,可以看到此child下包含focus方法

弊端:field.$children[0]太过于局限,当此el-form-item中包含其他的组件时,索引为0的不一定是input框,如:

此时,field.$children[0]是一个el-button组件,此组件没有focus方法,会导致报错
最终解决办法
在之前的debug过程中可以看到element-ui自带的表单验证返回中包含一个invalidFields对象,此对象包含了验证失败的所有属性名,如下图所示:

通过遍历invalidFields的属性(ps:之后才知道for可以遍历一个对象的所有属性),在对应的input框上添加ref属性,直接根据ref就可精确地获取到元素


注意:input的readonly和disabled属性
disabled和readonly:
共同点:
都设为true,则form属性将不能被编辑;
不同点:
disabled=true时,该表单项不能获取焦点,表单提交时此项不会提交;
readonly只针对input(text / password)和textarea表单项有效,设置为true时,依然可以获取焦点,提交时此项也会提交;
参考链接:
https://blog.csdn.net/m0_37972557/article/details/81357607
el-mement表单校验-校验失败时自动聚焦到失败的input框的更多相关文章
- form表单提交校验
<form id="myForm" action="http://www.365mini.com" method="post"> ...
- Element Ui使用技巧——Form表单的校验规则rules详细说明
Element UI中对Form表单验证的使用介绍: Form 组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,并将 Form-Item的 prop 属性设置为需校验的字段名 ...
- SpringMVC中使用bean来接收form表单提交的参数时的注意点
这是前辈们对于SpringMVC接收表单数据记录下来的总结经验: SpringMVC接收页面表单参数 springmvc请求参数获取的几种方法 下面是我自己在使用时发现的,前辈们没有记录的细节和注意点 ...
- 如何让form表单在enter键入时不提交
今天在做我的一个小玩意 在线聊天工具的时候 form表单只有一个text和一个button每当我键入enter的时候就刷新.很是郁闷,直接在form上onsumbit=false.才行. 下面是我查询 ...
- 如何去除表单元素获得焦点时的外边框:outline (轮廓)
我们在做制作表单页面时,经常会需要消除表单元素带来的边框,这时候我们需要用到两个属性: 1.表单元素未激活状态下的边框,不实现边框: border:none; 2.表单元素获得焦点时的轮廓,隐藏轮廓: ...
- 学习LayUI时自研的表单参数校验框架
开发背景&痛点:每次写前端的表单的时候需要对表单里用户填写的内容进行校验,减少服务器压力,提前对已知错误对用户提示.每次会要写很多的if else等等对输入框中的内容进行判断,并对为空.格式不 ...
- 使用JavaScript 实现注册表单的校验
说明:在点击提交时进行表单校验,具体要求如下: 1)用户名为3~16个字符,且不能包含”@”和”#”字符: 2)密码和校验密码必须一致,且长度在8个字符到16个字符: 3)兴趣爱好至少选择一项: 4) ...
- JavaScript:使用JavaScript 实现注册表单的校验
说明:在点击提交时进行表单校验,具体要求如下: 1)用户名为3~16个字符,且不能包含”@”和”#”字符: 2)密码和校验密码必须一致,且长度在8个字符到16个字符: 3)兴趣爱好至少选择一项: 4) ...
- JavaScript实现表单的校验以及匹配正则表达式
运行效果: 未填写信息报错: 匹配正则表达式: 信息校验无误: 源代码如下: 1 <!DOCTYPE html> 2 <html lang="zh"> 3 ...
随机推荐
- php实现雪花算法(ID递增)
雪花算法简单描述: 最高位是符号位,始终为0,不可用. 41位的时间序列,精确到毫秒级,41位的长度可以使用69年.时间位还有一个很重要的作用是可以根据时间进行排序. 10位的机器标识,10位的长度最 ...
- Git切换分支并提交到远程分支
1. 在本地需要提交的文件同级目录运行git bash 2. 初始化 git 运行环境 $ git init 3. 新建本地分支develop $ git checkout -b decelop 4. ...
- BLE 5协议栈-通用访问规范层(GAP)
文章转载自:http://www.sunyouqun.com/2017/04/ 通用访问规范GAP(Generic Access Profile)是BLE设备内部功能对外的接口层,它规定了三个方面:G ...
- python文件操作:文件处理与操作模式
一,文件处理的模式基本概念 #coding:utf-8 # 一: 文件处理的三个步骤 # 1. 打开文件拿到文件对象(文件对象====>操作系统打开文件====>硬盘) # f=open( ...
- Python3.8新特性--PositionalOnly参数
“理论联系实惠,密切联系领导,表扬和自我表扬”——我就是老司机,曾经写文章教各位怎么打拼职场的老司机. 不记得没关系,只需要知道:有这么一位老司机, 穿上西装带大家打拼职场! 操起键盘带大家打磨技术! ...
- Java语言基础(8)
1 数组(二) 1)for-each循环:增强的for循环,JDK1.5推出的,用来输出数组和集合中每一个元素的值. for(数据类型 变量 : 数组名){ 变量:临时保存元素的值 } 数据类型必须跟 ...
- “美登杯”上海市高校大学生程序设计邀请赛 **D. 小花梨的取石子游戏**
"美登杯"上海市高校大学生程序设计邀请赛 (华东理工大学) D. 小花梨的取石子游戏 Description 小花梨有
- OpenGL相关文章
OpenGL之glMatrixMode函数的用法 gluOrtho2D和glViewport的作用&窗口与显示的关系 glViewport函数用法 纹理映射
- SpringMVC配置文件详解:<context:annotation-config/>和<context:component-scan base-package=""/>和<mvc:annotation-driven />
原文地址:https://www.cnblogs.com/lcngu/p/5080702.html Spring配置文件详解:<context:annotation-config/>和&l ...
- 创建表空间 ora-01119
create tablespace user_data logging datafile 'D:\app\Administrator\oradata\orcl\ARCHIVE.dbf' size 50 ...