【发布时间】:2021-11-02 21:05:01
【问题描述】:
EditForm 元素在模型更改时重新呈现它的子内容。作为副作用,活动(聚焦)输入元素会从 DOM 中移除并且焦点会丢失。
<EditForm Model="model">
<!-- Focus will not be retained when model changes -->
<InputText @bind-Value="model.Name" />
...dozen of other inputs
</EditForm>
查看演示:https://blazorrepl.com/repl/mbbEcJaB56u8TmG400
当 EditForm 被重新渲染时,我希望将焦点保留在同一个输入上 - 无论输入有焦点。
如何在重新呈现 EditForm 时保持对同一输入的关注?
理想情况下,我应该有一个通用的解决方案,因为我的项目中有许多表单和许多不同的输入
编辑:
我知道如何通过使用ElementRef.Focus() 或JS 以编程方式将焦点设置到元素。
这个问题是关于保持对用户关注的任何输入的关注。
【问题讨论】:
-
Blazor 有一个用于元素的
FocusAsync方法(使用@ref)。您还可以随时使用 JavaScript 互操作来调用对元素的关注。