Проблема кажется очень простой, но я пока не нашел решения. У меня есть Blazor Input с событием onkeydown
:
<input @onkeydown="@(e => KeyWasPressed(e))"
@onkeydown:preventDefault="@PreventDefault"
id="@GetId()"
name="@GetId()"
@bind-value="@InputValue"
@bind-value:event="oninput" />
Пользователь должен писать текст, но с помощью клавиш со стрелками пользователь должен перемещаться по списку (поэтому я пытаюсь предотвратить перемещение курсора в верх и конец текста).
В 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...
}
}
Как это сделать в Blazor? С @onkeydown:preventDefault
вы можете запретить весь ввод . Если я установлю его в переменную (@PreventDefault
), я могу запретить только следующий вход (поскольку первый вход уже произошел). Просто для понимания того, что я имею в виду:
- PreventDefault FALSE> Ввод «H»> установите PreventDefault в FALSE
- PreventDefault FALSE> Ввод «ArrowUp»> установите PreventDefault в TRUE
- PreventDefault TRUE > Вход «i»> установите для PreventDefault значение FALSE
Таким образом, вход будет (| = курсор): H | > | H> | H
Что означает, что курсор неправильный, а "i" было предотвращено.
Есть идеи? Спасибо за совет.