思路:调用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. Windows 下的快捷键

    电脑快捷键小技巧window健 + r   →  msconfig       查看电脑的开机启动项window健 + r   →  notepad        无标题的记事本window健 + r ...

  2. 【4】Zookeeper数据模型

    一.Znode节点是什么 1.1.概念   Znode节点是Zookeeper中数据模型中最小的数据单元.Zookeeper的数据模型是一颗树,由"/"进行分割路径.每个znode ...

  3. thinkphp5.0 field和with连用的问题

    field在with后面时field会不起作用,会查询数据库中全部的字段: field在with前面时会无法筛选联表的字段 解决办法把with换成join,field和join顺序无所谓 * @par ...

  4. 2、screen工具

    1.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远 ...

  5. greenlet、gevent:历史悠久的用于处理并发的模块

    greenlet介绍 greenlet是用C语言编写的一个模块,然后让python调用,目的就是为了让python支持协程. A "greenlet" is a small ind ...

  6. IPC之util.h源码解读

    /* SPDX-License-Identifier: GPL-2.0 */ /* * linux/ipc/util.h * Copyright (C) 1999 Christoph Rohland ...

  7. QTP(5)

    一.检查点 1.位图检查点(Bitmap CheckPoint) (1)作用:主要用于检查UI界面,检查页面布局,包括控件位置.大小.颜色.状态等 (2)确定位图检查点的要素: a.检查哪个控件 b. ...

  8. [CEOI1999]Sightseeing trip(Floyed)

    [CEOI1999]Sightseeing trip Description There is a travel agency in Adelton town on Zanzibar island. ...

  9. Scrapy爬取小说简单逻辑

    Scrapy爬取小说简单逻辑 一 准备工作 1)安装Python 2)安装PIP 3)安装scrapy 4)安装pywin32 5)安装VCForPython27.exe ........... 具体 ...

  10. git撤销pull命令

    1.运行git reflog命令查看你的历史变更记录 2.然后用git reset --hard HEAD@{n},(n是你要回退到的引用位置)回退. 比如上图可运行 git reset --hard ...