相关疑难解决方法(0)

C# Blazor:如何使用 e.preventDefault() 防止像在 JS 中那样输入特定键?

问题看起来很简单,但我还没有找到任何解决方案。我有一个带有onkeydown事件的 Blazor 输入:

<input @onkeydown="@(e => KeyWasPressed(e))" 
@onkeydown:preventDefault="@PreventDefault" 
id="@GetId()" 
name="@GetId()" 
@bind-value="@InputValue" 
@bind-value:event="oninput" />
Run Code Online (Sandbox Code Playgroud)

用户应该写文本,但用户应该使用箭头键在列表中导航(所以我试图阻止光标移动到文本的顶部和结尾)。

在 JavaScript 中,这可能是这样的:

function KeyWasPressed(e)
{
    // key down
    if (e.keyCode == 40)
    {
        e.preventDefault();
        // some work...
    }
    // key up
    else if (e.keyCode == 38)
    {
        e.preventDefault();
        // some work...
    }
}
Run Code Online (Sandbox Code Playgroud)

如何在 Blazor 中做到这一点?用@onkeydown:preventDefault你可以防止整个输入。如果我将其设置为变量 ( @PreventDefault),则只能阻止下一个输入(因为第一个输入已经发生)。只是为了理解我的意思:

  • preventDefault FALSE > 输入“H”> 将 preventDefault 设置为 FALSE
  • preventDefault FALSE > 输入“ArrowUp”> 将 preventDefault 设置为TRUE
  • preventDefault TRUE …

c# blazor

8
推荐指数
2
解决办法
2429
查看次数

标签 统计

blazor ×1

c# ×1