You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Blazor中实现点击文本框或数值框时自动高亮内部内容

Blazor实现输入框聚焦自动全选内容的方法

以下三种方案均适合入门级开发者使用,可根据自身场景选择:

方案1:原生input标签实现(无需额外配置,最简单)

如果你用的是普通HTML input标签,直接给标签添加onfocus="this.select()"属性即可,这是HTML原生支持的能力,不需要Blazor做额外处理:

<!-- 普通文本框 -->
<input type="text" value="默认内容" onfocus="this.select()" />

<!-- 数值输入框 -->
<input type="number" value="20" onfocus="this.select()" />

方案2:Blazor内置表单组件实现

如果你用的是EditForm下的InputText/InputNumber等Blazor原生表单组件,直接给组件添加同样的属性即可,Blazor会自动将该特性渲染到生成的HTML标签上:

<EditForm Model="@testModel">
    <InputText @bind-Value="@testModel.UserName" onfocus="this.select()" />
    <InputNumber @bind-Value="@testModel.Age" onfocus="this.select()" />
</EditForm>

@code {
    private TestModel testModel = new();
    private class TestModel
    {
        public string UserName { get; set; } = "默认用户名";
        public int Age { get; set; } = 25;
    }
}

方案3:封装通用复用组件

如果多个页面都需要用到这个效果,可以封装成自定义组件,避免重复编写属性:

// Shared/AutoSelectInputText.razor
<InputText @attributes="AdditionalAttributes" 
           Value="@Value" 
           ValueChanged="@ValueChanged" 
           ValueExpression="@ValueExpression" 
           onfocus="this.select()" />

@code {
    [Parameter]
    public string Value { get; set; }
    [Parameter]
    public EventCallback<string> ValueChanged { get; set; }
    [Parameter]
    public System.Linq.Expressions.Expression<Func<string>> ValueExpression { get; set; }
    [Parameter(CaptureUnmatchedValues = true)]
    public Dictionary<string, object> AdditionalAttributes { get; set; }
}

使用时直接调用封装好的组件即可:

<AutoSelectInputText @bind-Value="@testModel.UserName" />

内容的提问来源于stack exchange,提问作者buddhi chamalka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 01:27:05