Vue element 表单验证不通过时,滚动到校验未通过位置
作者:@ywjbalabala
本文为作者原创,转载请注明出处:https://www.cnblogs.com/ywjbalabala/p/17661637.html
我们在使用elementIUI实现表单验证,内容比较多的时候,提示内容会被遮挡,这时候用户不清楚什么情况,还会连续点击提交按钮。这个时候需求来啦:我们需要在表单验证不通过的时候,页面滚动到对应校验不通过的位置。
大致思路
在表单验证方法validate中,提供了两个参数:是否校验成功,和未通过校验的字段规则。
在需要验证的位置加上ref,需要注意,这里的ref需要和prop的值一致。
表单校验逻辑
表单校验中,参数_为校验是否成功字段,参数object为校验规则。当if(_)判断成功时,进入提交逻辑,else则校验失败,调用scrollToView方法,并提示错误信息。其中,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; //因为我们只需要检测一项,所以就可以跳出循环了 } }
在表单需要校验的位置加上ref
作者:ywjbalabala
出处:https://www.cnblogs.com/ywjbalabala/
本文版权归作者和博客园所有,欢迎转载。转载请在留言板处留言给我,且在文章标明原文链接,谢谢!
如果您觉得本篇博文对您有所收获,觉得我还算用心,请点击右下角的 [推荐],谢谢!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了