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

Blazor中输入框更新失效:输入'8'无法清空输入框

Blazor输入框输入'8'无法清空的问题解决

问题原因

你采用的是单向绑定value="@Answer"配合@oninput事件的写法,浏览器会先执行默认输入行为(把输入的'8'显示在输入框中),再触发OnInput方法。哪怕你在方法里将Answer设为空,此时浏览器已经完成了输入框的更新,Blazor后续的DOM更新会被覆盖,导致输入框依然显示'8'。

解决方法

方法一:阻止浏览器默认输入行为

修改输入框代码,让Blazor完全控制输入框的值:

<input value="@Answer" @oninput:preventDefault="OnInput" />

添加:preventDefault后,浏览器不会自动添加输入的字符,输入框的值完全由Answer决定,设置Answer = ""时输入框会立刻清空。

方法二:改用双向绑定

使用@bind-value实现输入框与变量的双向同步,再在绑定后的回调中处理清空逻辑:

<input @bind-value="Answer" @bind-value:after="OnInputAfter" />

对应的代码修改:

@code {
    private string Answer = "";
    private string input = "";
    private string updated = "";

    private void OnInputAfter() {
        string answer = Answer;
        input = ":" + answer;
        if (answer == "12" || answer == "8" || answer.Length > 2) {
            Answer = "";
        }
        updated = ":" + Answer + ":";
    }
}

双向绑定会自动同步输入框和Answer的值,回调中的清空逻辑能确保输入框及时响应更新。

两种方法都能解决输入'8'无法清空的问题,同时保留输入'12'、超过两位数字时的清空功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:35:02