需要通过键盘点击 AND 来实现按下 AND 按钮后的动作。我归因于两个OnCliCk()
事件KeyDown(KeyboardEventArgs e)
如果用户按 Enter 键,则 Onclick 也会触发,然后重复执行,原本计划执行一次。我该如何执行这个任务?为什么OnClick会起作用,因为我不是点击鼠标,而是按键盘上的Enter键。我尝试删除 Onclick,但用户仅限于键盘。我怎样才能实现两个事件,以便某些操作只能起作用一次并且不会重复。
如果用户按下键盘= Enter,则触发OnKeyDown,如果使用鼠标,则触发OnClick
@page "/"
@inject IJSRuntime JsRuntime
@{
<p>какой то текст</p>
<button>кнопка точка отступа, чтоб табуляцию переключить</button>
<button @onkeydown="@((e)=>KeyDown(e))"
@onclick="@(()=>OnCliCk())">Test event with keyboard</button>
}
@code{
public async void KeyDown(KeyboardEventArgs e)
{
if (e.Code == "Enter" || e.Code == "NumpadEnter")
{
await JsRuntime.InvokeVoidAsync("alert", "KeyDown!");
}
}
public async void OnCliCk()
{
await JsRuntime.InvokeVoidAsync("alert", "OnClick!");
}
}
这是 GitHub 上的一个示例,我使用 Blazor 作为示例,我没有放置 Blazor 标签,因为这是一个关于事件序列逻辑的一般问题。
当然有一种方法可以使用这两种操作来方便用户使用按钮,但我在文档中没有找到它。告诉我,谁已经这样做了,你是如何解决这个问题的?如果有文档链接,那么也谢谢
用简单的语言来说(如果在这个例子中),我需要模态窗口一次,而不是像演示的第二种情况那样两次
我记得。
使用
onclick
,onmousedown
则事件不会在键盘上触发。即使onclick
以编程方式按下它也能工作element.click()
。