【发布时间】:2021-07-13 16:40:42
【问题描述】:
我有一个包含大量字段的编辑表单。如果用户出错并尝试提交表单,他们必须手动滚动以查看错误。使用 javascript,可以这样做:
var element = document.getElementById("content");
element.scrollIntoView();
在 blazor 中,如果必须,我可以使用 JS,但我不一定有要滚动到的 ID。
有没有一种好方法可以在提交时滚动到编辑表单中的第一个错误?
【问题讨论】:
-
见stackoverflow.com/questions/55186784/…,我认为它会回答你的问题
-
这是朝着正确方向迈出的一步,但它假设我有一个特定的 ID。我不知道编辑表单中第一个有错误的元素的 ID,如果它甚至有一个我可以参考的 ID。
-
您特别说“滚动到页面顶部以查看错误”,因此在页面顶部设置一个 ID,例如
<span>,甚至可能是EditForm。如果你想滚动到第一个错误,那就有点棘手了!您需要为每个ValidationMessage提供一个基于约定的 id,例如“id-xxxxx”,其中 xxxx 是参数名称,在验证存储中查找错误消息,从Field identifier中计算出验证消息 id 和转到第一个。 -
糟糕!我的意思是“用户必须滚动到顶部”意味着用户必须手动执行该操作(无论是一直到顶部还是只是第一个错误)。我正在使用 MudBlazor 库,因此我没有传统的
ValidationMessages,因为每个文本字段都内置了验证支持。我会继续想办法让这项工作...... -
您解决了吗?我正在尝试做同样的事情,并认为我可以使用 var element = document.getElementsByClassName("validation-message")[0] 从 OnInvalidSubmit 调用 javascript。问题是当 JS 代码被触发时,验证还没有被渲染,所以元素是 null
标签: blazor blazor-editform js-scrollto