解决antd form表单校验错误时,设置scrollToFirstError 不能滚动到第一个校验错误位置
使用antd form表单自带属性scrollToFirstError校验不通过时自动滚动到第一个校验错误位置,但是经常没有效果,手动添加一个滚动方法来处理
1 2 3 4 | // 表单滚动到第一个报错处(antd) export const scrollToFirstError = () => { document.querySelector( '.ant-form-item-has-error' )?.scrollIntoView({behavior: 'smooth' , block: 'center' }); }; |
具体使用
在表单校验失败的catch事件中调用滚动方法
1 2 3 4 5 | form.validateFields() .then((values) => { //校验成功逻辑 }) . catch (scrollToFirstError); |
更多
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'}
例子
123456const element = document.getElementById(
"box"
);
element.scrollIntoView();
element.scrollIntoView(
false
);
element.scrollIntoView({ block:
"end"
});
element.scrollIntoView({ behavior:
"smooth"
, block:
"end"
, inline:
"nearest"
});
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了