首页 前端知识 el-table嵌套el-form校验,滚动到有问题处并高亮

el-table嵌套el-form校验,滚动到有问题处并高亮

2024-08-12 10:08:24 前端知识 前端哥 755 824 我要收藏

文章目录

前言

一、校验表单

二、滚动到指定位置

1.获取当前table的dom元素数组

2.获取某个索引对应的dom元素距离table的顶部距离

3.设置table滚动到某个位置

三、设置el-table某一行高亮

四、取消el-table某一行高亮

总结


前言

需求:el-table表格当中嵌套el-form表单,在提交的时候校验表单,由于可能填写很多条,所以期望哪一条校验不通过,直观的让用户看到不正确的那一行,所以滚动到不正确的地方并且高亮当前行。


一、校验表单

一般的校验可以直接利用element自己封装的form校验即可,要是有复杂的话,在提交的时候另外写判断规则。

二、滚动到指定位置

1.获取当前table的dom元素数组

const arr = Array.from(this.$refs.table.$el.getElementsByClassName('el-table__row'))

arr就是table的dom元素数组,每一条对应每一行的dom元素

2.获取某个索引对应的dom元素距离table的顶部距离

arr[ index ].offsetTop

用到了offsetTop方法:当前对象到其上级层顶部的距离

3.设置table滚动到某个位置

一般滚动到指定位置可以有以下方法:

  • scrollTop(x,y):
    • top:纵坐标 left:横坐标
  • scrollTop(options):
    • top:纵坐标 left:横坐标
    • behavior  类型String,表示滚动行为,支持参数 smooth(平滑滚动),instant(瞬间滚动),默认值auto,实测效果等同于instant

  window.scrollTo({
          top:560,
          left:0,
          behavior: "smooth"
   });

  • scrollTop

设置table滚动到某个位置

table滚动到距离顶部num的位置

this.$refs.table.bodyWrapper.scrollTop = num

注意:table必须有滚动条才会滚动,需要设置固定表头,给el-table加一个高度,我一般设置max-height(最大高度),达到最大高度之后的数据需要滚动查看。如果没设置的话,实现不了滚动到指定行

三、设置el-table某一行高亮

element的table封装了一个setCurrentRow方法,传入某一行数据就会高亮这一行,如果不传入参数,就不会高亮(也可以用来取消高亮)。

当校验不通过时,将这一行数据传入setCurrentRow中,即可实现高亮

this.$refs.table.setCurrentRow(row)

四、取消el-table某一行高亮

el-table默认有个交互就是点击某一行会高亮当前行。

新增一个方法点击触发的方法row-click,在点击之后设置不高亮

<el-table

        ref="table"
        ...

        @row-click="rowClick"

>


.
.
.

 

rowClick() {

        this.$refs.table.setCurrentRow()

}

也可以根据需求修改高亮样式

/deep/ .el-table__body tr.current-row>td .el-form-item .el-input {

        color: #fff;

        border: 1px solid #F56C6C !important;

        border-radius: 4px;

        box-sizing: border-box;

}


总结

总之,就是三步:

  1. 获取dom元素
  2. 计算dom元素距离顶部的距离
  3. 将页面滚动到指定位置
转载请注明出处或者链接地址:https://www.qianduange.cn//article/15374.html
标签
评论
发布的文章

安装Nodejs后,npm无法使用

2024-11-30 11:11:38

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!