我今天开始使用 Blazor,同时已经拥有一些 Web 开发经验。 然而这似乎还不够。我想获取 onkeydown 事件的事件参数,以便我可以检查是否有 Enter 键按下。
我已经尝试在我的事件中使用一个函数来检查单独函数中的按键,并且已经尝试直接将某些内容插入到 onkeydown 事件中,但没有任何效果。
以下是我想要从中获取按键的事件。
<input onkeydown="" bind="@todo.Title" />
最佳答案
您需要使用UIKeyboardEventArgs
,例如将事件作为JavaScript中的参数传递。
<p id="p" onclick="doSomething(event);">
在 Blazor 中,您将通过以下方式执行此操作:
<input type="text" onkeypress="@(e => KeyWasPressed(e))" />
/* For .NET Core 3.0+ as per: https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.components.web.keyboardeventargs?view=aspnetcore-3.1 */
@functions {
private void KeyWasPressed(KeyboardEventArgs args)
{
if (args.Key == "r")
{
Console.WriteLine("R was pressed");
}
}
}
/* For old .NET Core versions */
@functions {
private void KeyWasPressed(UIKeyboardEventArgs args)
{
if (args.Key == "r")
{
Console.WriteLine("R was pressed");
}
}
}
正如 @Bohring 在评论中已经提到的,如果您编写 onkeypress="@KeyWasPressed"
您可以在此处阅读有关其他事件参数的更多信息:https://visualstudiomagazine.com/articles/2018/10/01/blazor-event-handling.aspx
关于c# - 如何在 Blazor/Razor 中获取事件数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56144829/