思路:调用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框的更多相关文章

  1. form表单提交校验

    <form id="myForm" action="http://www.365mini.com" method="post"> ...

  2. Element Ui使用技巧——Form表单的校验规则rules详细说明

    Element UI中对Form表单验证的使用介绍: Form 组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,并将 Form-Item的 prop 属性设置为需校验的字段名 ...

  3. SpringMVC中使用bean来接收form表单提交的参数时的注意点

    这是前辈们对于SpringMVC接收表单数据记录下来的总结经验: SpringMVC接收页面表单参数 springmvc请求参数获取的几种方法 下面是我自己在使用时发现的,前辈们没有记录的细节和注意点 ...

  4. 如何让form表单在enter键入时不提交

    今天在做我的一个小玩意 在线聊天工具的时候 form表单只有一个text和一个button每当我键入enter的时候就刷新.很是郁闷,直接在form上onsumbit=false.才行. 下面是我查询 ...

  5. 如何去除表单元素获得焦点时的外边框:outline (轮廓)

    我们在做制作表单页面时,经常会需要消除表单元素带来的边框,这时候我们需要用到两个属性: 1.表单元素未激活状态下的边框,不实现边框: border:none; 2.表单元素获得焦点时的轮廓,隐藏轮廓: ...

  6. 学习LayUI时自研的表单参数校验框架

    开发背景&痛点:每次写前端的表单的时候需要对表单里用户填写的内容进行校验,减少服务器压力,提前对已知错误对用户提示.每次会要写很多的if else等等对输入框中的内容进行判断,并对为空.格式不 ...

  7. 使用JavaScript 实现注册表单的校验

    说明:在点击提交时进行表单校验,具体要求如下: 1)用户名为3~16个字符,且不能包含”@”和”#”字符: 2)密码和校验密码必须一致,且长度在8个字符到16个字符: 3)兴趣爱好至少选择一项: 4) ...

  8. JavaScript:使用JavaScript 实现注册表单的校验

    说明:在点击提交时进行表单校验,具体要求如下: 1)用户名为3~16个字符,且不能包含”@”和”#”字符: 2)密码和校验密码必须一致,且长度在8个字符到16个字符: 3)兴趣爱好至少选择一项: 4) ...

  9. JavaScript实现表单的校验以及匹配正则表达式

    运行效果: 未填写信息报错: 匹配正则表达式: 信息校验无误: 源代码如下: 1 <!DOCTYPE html> 2 <html lang="zh"> 3 ...

随机推荐

  1. Nginx作为静态资源web服务之缓存原理

    Nginx作为静态资源web服务之缓存原理 大致理一下http浏览器缓存原理: 浏览器第一次请求服务器,此时浏览器肯定没有缓存,则直接调用服务器端,服务器在返回的信息的信息头中添加 ETag和Last ...

  2. 使用JFreeChart创建柱状图的工具类

    package cn.xfz.oa.util; import java.awt.Font; import java.util.List; import org.jfree.chart.ChartFac ...

  3. react+antd引入 阿里图标

    import iconfont from '../../../../assets/fonts/iconfont.js' const Iconfont = Icon.createFromIconfont ...

  4. ios上滚动不顺畅css处理方式

      overflow-y: auto; -webkit-overflow-scrolling: touch;

  5. Java学习笔记【九、集合框架】

    集合框架设计的目标: 高性能. 允许不同类型的集合,以类似的方式工作,有互操作性. 对一个集合的扩展和适应必须简单. 集合框架包含: 接口:代表集合的抽象数据类型. 实现(类):具体实现(ArrayL ...

  6. Jetson TX1 安装ROS操作系统

    直接按照官网上的步骤安装即可,其中会出现很多bug,主要是依赖库安装的问题,添加清华源和中科大源,(注意:中科大源会有些问题)需要apt-get update 和 apt-get upgrade更新库 ...

  7. 08-【jsp重点】

    jsp的四个作用域和9个内置对象 jsp内置对象[重点]:pageContext.request.session.application.response.out.page.exception.con ...

  8. 八,kubernetes集群存储卷基础。

    目录 存储卷 存储的分类 emptyDir 测试及使用 hostpath实例 Pod测试挂在共享NFS 写测试清单 测试 pv, pvc 创建几个PV 创建测试的Pod 和 PVC 存储卷 pod运行 ...

  9. Linux工具之ss

    1.SS命令 (Socket   Statistics),获取socket统计信息,显示和netstat类似的内容.显示更详细的TCP连接信息.   命令功能: ss(Socket Statistic ...

  10. UVA 1482 SG打表

    打出SG表来可以很容易的发现i为偶数时 SG[i]=i/2 i为奇数时 SG[i]=SG[i/2] #include<bits/stdc++.h> typedef long long ll ...