zoukankan      html  css  js  c++  java
  • vue element 表单验证不通过,滚动到固对应位置

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

    了解来需求,那我们来看看如何实现?其实比较简单,下面说一下大致思路:

    • 在表单验证方法validate中,提供了两个参数:是否校验成功,和未通过校验的字段规则。
    • 在需要验证的位置加上ref,需要注意,这里的ref需要和prop的值一致

    不多说了,直接上代码:

    验证表单不通过,会调用 scrollToView 方法,该方法作用就是滚动到对应位置 

    /**
     * element 表单多个验证不通过,滚动到验证提示的位置
     * { String } object 验证规则
     * 备注:
     *     1.this.$refs.infoList.validate((_, object)=>{})   返回两个参数,第一个参数:验证是否成功,第二个参数:验证规则
     *     2.验证的标签上添加ref属性,名字和prop值一致。例:<el-form-item :prop="'infoData.' + scope.$index + '.coalName'" :ref="'infoData.' + scope.$index + '.coalName'" ></el-form-item>
     */
    export function scrollToView(_this, object) {
      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; //获取当前节点的偏移值
        // console.log(top,'top');
        // let scrollTop = document.documentElement.scrollTop; //获取视图滚动值
        // let diff = top + scrollTop;
        // document.documentElement.scrollTop = diff - 276; //276是第一个输入框节点距离顶部的偏移值,也可以在初始化提前保存
        //window.scrollTo(0,diff- 276) //同上
        break; //因为我们只需要检测一项,所以就可以跳出循环了
      }
    }
  • 相关阅读:
    时间与时间戳互换
    原生js鼠标滑动滚轮事件
    php调用whois接口域名查询
    通用php与mysql数据库配置文件
    多个div独立控制其显示/隐藏
    jquery
    定时显示div
    一个清爽的弹出层特效
    自定义百度竞价电话回拨样式总结
    基于h5+ajax实现的手机定位
  • 原文地址:https://www.cnblogs.com/cap-rq/p/14251238.html
Copyright © 2011-2022 走看看