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

Blazor KeyDown事件在Android设备上无法触发的原因与解决办法

Blazor移动端KeyDown事件按键码不显示问题解决

可复现组件代码

<p>@Text</p>
<input @onkeydown="RefreshText"/>

@code {
    private string Text = "";

    private void RefreshText(KeyboardEventArgs eventData)
    {
        Text = eventData.Code;
    }
}

问题现象

预期每次触发KeyDown事件时,段落会显示对应按键码。PC端运行正常,但Android移动设备上段落始终为空。

问题原因

Android虚拟键盘触发keydown事件时,多数场景不会填充eventData.Code属性。Code是基于物理键盘按键位置的编码,虚拟键盘没有统一的物理位置映射标准,因此无法返回有效值;而PC端物理键盘有明确的按键位置,能正常返回Code。

解决方法

改用eventData.Key属性,或者同时兼容Code和Key(优先用Code,无值时 fallback 到Key)。Key返回的是按键对应的字符或功能键名称(如"a"、"Enter"),在虚拟键盘上能正常获取,可兼容PC和移动端。

修改后的代码示例:

<p>@Text</p>
<input @onkeydown="RefreshText"/>

@code {
    private string Text = "";

    private void RefreshText(KeyboardEventArgs eventData)
    {
        Text = !string.IsNullOrEmpty(eventData.Code) ? eventData.Code : eventData.Key;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 18:57:11