首页 > 其他分享 >解决antd form表单校验错误时,设置scrollToFirstError 不能滚动到第一个校验错误位置

解决antd form表单校验错误时,设置scrollToFirstError 不能滚动到第一个校验错误位置

时间:2023-05-08 18:34:06浏览次数:44  
标签:nearest 滚动 错误 form scrollIntoView 校验 对齐 block

使用antd form表单自带属性scrollToFirstError校验不通过时自动滚动到第一个校验错误位置,但是经常没有效果,手动添加一个滚动方法来处理

// 表单滚动到第一个报错处(antd)
export const scrollToFirstError = () => {
    document.querySelector('.ant-form-item-has-error')?.scrollIntoView({behavior: 'smooth', block: 'center'});
};

 scrollIntoView() 方法会滚动元素的父容器,使被调用 scrollIntoView() 的元素对用户可见。WEB API链接

  • behavior定义过渡动画,默认值为auto

    • auto,表示没有平滑的滚动动画效果。
    • smooth,表示有平滑的滚动动画效果。
  • block定义垂直方向的对齐,默认值为start

    • start,表示顶端对齐。
    • center,表示中间对齐。
    • end,表示底端对齐。
    • nearest

      • 如果元素完全在视口内,则垂直方向不发生滚动。
      • 如果元素未能完全在视口内,则根据最短滚动距离原则,垂直方向滚动父级容器,使元素完全在视口内。
  • inline定义水平方向的对齐,默认值为nearest

    • start,表示左端对齐。
    • center,表示中间对齐。
    • end,表示右端对齐。
    • nearest

      • 如果元素完全在视口内,则水平方向不发生滚动。
      • 如果元素未能完全在视口内,则根据最短滚动距离原则,水平方向滚动父级容器,使元素完全在视口内。

alignToTop

  • 当传入参数true时,相当于{behavior: 'auto', block: 'start', inline: 'nearest'}
  • 当传入参数false时,相当于{behavior: 'auto', block: 'end', inline: 'nearest'}
当未传入参数时,默认值为:{behavior: 'auto', block: 'start', inline: 'nearest'}

例子

const element = document.getElementById("box");

element.scrollIntoView();
element.scrollIntoView(false);
element.scrollIntoView({ block: "end" });
element.scrollIntoView({ behavior: "smooth", block: "end", inline: "nearest" });

具体使用

在表单校验失败的catch事件中调用滚动方法

 form.validateFields()
            .then((values) => {
                //校验成功逻辑
            })
            .catch(scrollToFirstError);                

 

标签:nearest,滚动,错误,form,scrollIntoView,校验,对齐,block
From: https://www.cnblogs.com/anin/p/17382787.html

相关文章

  • 解决git错误: error: The following untracked working tree files would be overwrit
    在我本地上进行gitpull的时候,出现这个错误:error:Thefollowinguntrackedworkingtreefileswouldbeoverwrittenbymerge:config/config.php 这是因为,本地上有一个文件,没有被git管理,但是git上有了同名的文件。怎么解决呢? 1。如果不需要本地的文件了,那么直接......
  • 【论文解读】(拼音+字形+字三种信息的中文BERT)ChineseBERT: Chinese Pretraining Enhan
    文章目录1.相关信息2.论文内容3.论文模型3.1GlyphEmbedding3.2PinyinEmbedding4.实验与结论5.模型使用方式1.相关信息论文年份:2021论文地址:https://aclanthology.org/2021.acl-long.161.pdf论文代码(官方):https://github.com/ShannonAI/ChineseBertHuggingFace:Shan......
  • 更新macOS系统后,使用gcc/g++命令,提示错误xcrun: error: invalid active developer pat
      更新macOS系统后,使用gcc/g++命令编译程序,提示错误xcrun:error:invalidactivedeveloperpath(/Library/Developer/CommandLineTools),missingxcrunat:/Library/Developer/CommandLineTools/usr/bin/xcrun解决方法:重新安装CommandLineTools,一般安装完成后问题就能......
  • python Django校验表单登录案例
    定义一个视图函数,用于处理登录表单的提交动作。在该视图函数中,使用request.POST.get()方法获取POST请求中提交的用户名和密码数据,具体代码如下:fromdjango.shortcutsimportrender,redirectfromdjango.contrib.authimportauthenticate,logindeflogin_view(requ......
  • Linux基础19 Gdisk, 挂载命令mount与配置文件, fstab文件的详细信息, Swap介绍与案例,
    gdiskgdisk分区,分区表是GPT,支持更大的容量分区。128个。#需要安装[root@oldboy~]#yuminstall-ygdisk 1.添加硬盘,3TB在vmware里面添加2.查看是否能识别出来。[root@oldboy~]#lsblkNAMEMAJ:MINRMSIZEROTYPEMOUNTPOINTsda8:0050G0disk......
  • 【Issues】axios如何获取responseType为blob的请求的错误信息
    问题背景axios请求下载文件时会设置responseType:'blob’来处理,此时如果响应数据错误,则无法下载文件且同时没有把相关的错误信息提示处理。因为返回的是Blob对象,无法获取到普通对象中的错误信息。例如:{"code":450002,"data":null,"msg":"下载出错"}这就需要在下载文件时做......
  • java: 错误: 无效的源发行版:17
    最近想在本地新建maven项目写写demo的,但是运行时提示java:错误:无效的源发行版:17错误。在这里记录一下,方便后面查看。1、修改IDEA设置JDK版本File-->Settings-->Build,Execution,Deployment-->Compiler-->JavaCompilerProjectStructure查看这两个设置......
  • 解决eclipse+myeclipse的Processing Dirty Regions错误
    http://www.javaeye.com/topic/192152我的Eclipse3.3.2+MyEclipse6.0.1在打开JSP文件时出现以下错误:Aninternalerroroccurredduring:"ProcessingDirtyRegions".org/eclipse/wst/sse/ui/internal/reconcile/validator/ValidationHelperAninternalerro......
  • vue+element输入框校验输入汉字再输入数字看似正常,实则有大问题,保存时数据不对
    在vue+elementUI项目中经常会使用到输入框限制为整数或者小数的需求,一般采用如下oninput="value=value.replace(/[^0-9.]/g,'')"解决,<el-input    :placeholder="请输入整数或者小数"    v-model="inputValue"   oninput="value=value.replace(/[^0-9......
  • ETL--Extract-Transform-Load
    ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标......