最近项目有个下单的过程,需要输入很多信息,每次提交都要往下滑,还要去验证,测试后发现体验也不好,element框架也没提供这种滚动方法,

   不过提供了一个验证的方法 validate (两个参数:是否校验成功和未通过校验的字段),于是做了一个验证错误时的位置滚动。

   

   列举几个输入框,我是通过 ref 获取节点信息来算位置的,所以每一块都需要去设置ref属性(有好的建议可以留言哈)   

      <el-form-item label="联系人:" prop="trailer.address.name" ref="trailer.address.name">
<el-input v-model="form.trailer.address.name" placeholder="请输入工厂联系人"></el-input>
</el-form-item>
<el-form-item label="手机号码:" prop="trailer.address.phone" ref="trailer.address.phone">
<el-input v-model="form.trailer.address.phone" placeholder="请输入手机号码"></el-input>
</el-form-item>
<el-form-item label="so号:" prop="trailer.so_no" ref="trailer.so_no">
<el-input v-model="form.trailer.so_no"></el-input>
      </el-form-item>

  

    this.$refs[formName].validate((valid, object) => {
console.log(object)  //object就是未通过校验的字段
if (valid) {
 //验证通过
} else {
        for (let i in object) {
let dom = this.$refs[i];
if (Object.prototype.toString.call(dom) !== '[object Object]') {  //这里是针对遍历的情况(多个输入框),取值为数组
dom = dom[0];
}      
                     //第一种方法(包含动画效果)
dom.$el.scrollIntoView({  //滚动到指定节点
block: 'center',     //值有start,center,end,nearest,当前显示在视图区域中间
behavior: 'smooth'    //值有auto、instant,smooth,缓动动画(当前是慢速的)
})

        //第二种方法
let top = dom.$el.getBoundingClientRect().top;  //获取当前节点的偏移值
let scrollTop = document.documentElement.scrollTop;  //获取视图滚动值
let diff = top + scrollTop;
  
document.documentElement.scrollTop = diff - 276;  //276是第一个输入框节点距离顶部的偏移值,也可以在初始化提前保存
//window.scrollTo(0,diff- 276) //同上
break; //因为我们只需要检测一项,所以就可以跳出循环了
}
}
});

展示图

  

vue element 表单多个验证时,滚动到验证提示的位置的更多相关文章

  1. vue element 表单验证不通过,滚动到固对应位置

    我们在使用elementIUI实现表单验证,内容比较多的时候,提示内容会被遮挡,这时候用户不清楚什么情况,还会连续点击提交按钮.这个时候需求来啦:我们需要在表单验证不通过的时候,页面滚动到对应的位置. ...

  2. vue+element 表单封成组件(1)

    作为一名刚接触vue不到一个月的菜鸟,思想还没有从操作DOM转变为数据驱动,看vue的代码处处别扭.组里为了让我熟悉vue交给了我一个将element 表单封装成组件的练手任务.由于开发过程中遇到的表 ...

  3. vue+element 表单验证

    效果图 <template> <div class="formValidator"> <div v-for="(item,index) in ...

  4. vue+element表单校验功能

    要实现这个功能其实并不难,element组件直接用就可以, 但是我在使用过程中碰到了几个坑,就记录下来,分享给大家,避免落坑,话不多说,直接上过程...... 表单校验功能:   实现这个功能,总共分 ...

  5. vue+element 表单封成组件(2)

    今天我们继续把时间选择器,多选框和单选框加上 父组件(在昨天的基础上增加): <template> <el-form :model="ruleForm" ref= ...

  6. vue需求表单有单位(时分秒千克等等)

    需求如下: 问题分析: 因为用elementui组件 el-input 相当于块级元素,后面的单位<span>分</span>会被挤下去,无法在同一水平. 解决方法: 不用它的 ...

  7. Element表单验证(1)

    Element表单验证(1) 首先要掌握Element官方那几个表单验证的例子,然后才看下面的教程. Element主要使用了async-validator这个库作为表单验证 async-valida ...

  8. Element表单验证(2)

    Element表单验证(2) 上篇讲的是async-validator的基本要素,那么,如何使用到Element中以及怎样优雅地使用,就在本篇. 上篇讲到async-validator由3大部分组成 ...

  9. async-validator:Element表单验证

    转载文章:Element表单验证(2)   Element表单验证(2) 上篇讲的是async-validator的基本要素,那么,如何使用到Element中以及怎样优雅地使用,就在本篇. 上篇讲到a ...

随机推荐

  1. centos默认安装mysql的默认密码

    安装centos时选择安装Mysql 服务器 mysql的默认登录密码为空,但是直接登录的时候有报错: [root@localhost bin]# mysql -u root -pEnter pass ...

  2. 一个简单的python爬虫,爬取知乎

    一个简单的python爬虫,爬取知乎 主要实现 爬取一个收藏夹 里 所有问题答案下的 图片 文字信息暂未收录,可自行实现,比图片更简单 具体代码里有详细注释,请自行阅读 项目源码: # -*- cod ...

  3. Red Hat 7.4 安装laravel框架 基于xampp集成环境

    一.安装xampp 1.下载xampp安装包:xampp-linux-x64-7.1.10-0-installer.run 2.在安装包目录下运行命令: ./xampp-linux-x64-7.1.1 ...

  4. 【MySQL】数据类型之字符相关

    " 目录 字符类型 char类型 varchar类型 实测 总结 枚举类型与集合类型 字符类型 官网:https://dev.mysql.com/doc/refman/5.7/en/char ...

  5. 【译】高级T-SQL进阶系列 (三)【中篇】:理解公共表表达式(CTEs)

    [译注:此文为翻译,由于本人水平所限,疏漏在所难免,欢迎探讨指正] 原文链接:传送门. 一个简单的CTE例子 如前所述,CTE‘s提供给你了一个方法来更容易的书写复杂的代码以提高其可读性.假设你有列表 ...

  6. mui 进行父子页面传值以及接收

    1.在父级页面进行传值 (my) mui.openWindow({ url: 'a.html', id: 'a', extras: { my: 'listpub' },}); 2.自己页面接收值 mu ...

  7. pycharm如何关闭虚拟环境(即取消venv命令行)

    venv命令行 是虚拟环境特有, 为什么要使用虚拟环境: 在实际项目开发中,我们通常会根据自己的需求去下载各种相应的框架库,如Scrapy.Beautiful Soup等,但是可能每个项目使用的框架库 ...

  8. abp方法权限

    一.自定义一个权限实体,也可以直接用abp的PermissionNames类 二.重写PermissionChecker中的IsGrantedAsync方法 public override async ...

  9. ASP.NET FileUpload 上传文件类型验证

    验证的核心方法: public static bool IsAllowedExtension(FileUpload hifile) { //原方法是这样的,会提示找不到文件 //System.IO.F ...

  10. No space left on device(转载)

    本文转自 http://blog.163.com/ly_89/blog/static/186902299201191233058625/ =====================概述======== ...