Blazor - 如何关注 EditForm 中的第一个无效字段

Blazor - How to focus on the first invalid field in EditForm

我在 Blazor 中有一个使用表单验证的表单,如 documentation 中所述。

当用户尝试提交表单,但验证失败时,我想让用户关注第一个无效的 <input> 字段。

这如何在 Blazor WebAssemby 中完成?

您可以使用 OnInvalidSubmit 并访问 EditContext

<EditForm @ref=editForm OnInvalidSubmit=@FocusFirstError ... 
...
    <InputText @bind-Value=@inputRegisteredUser.GivenName
               @ref=inputGivenName
               class="form-control"
               placeholder="Given Name"
               id="GivenName" />
...
private EditForm editForm;
// repeat for all inputs
private InputText inputGivenName;


private async Task FocusFirstError()
{
    var editContext = editForm.EditContext;
       
    // repeat for all inputs
    if(editContext.GetValidationMessages(() => inputRegisteredUser.GivenName).Any())
    {
        await inputGivenName.Element.Value.FocusAsync();
        return;
    }
}