我有:
<input onkeypress="@Foo" />
和:
@functions
{
void Foo(UIKeyboardEventArgs e)
{
}
}
如何传递或以其他方式获取处理程序方法中输入的值?
答案 0 :(得分:5)
对于正在搜索此内容的人,您可以使用.net core 3.1来实现,以处理Blazor上的按键事件。
<input value="@stringValue" @oninput="(EventArgs) => {SetValue(EventArgs.Value.ToString()); DoSomethingElse();}"/>
@code {
string stringValue = "";
private void SetValue(string Value)
{
stringValue = int.Parse(Value);
}
}
答案 1 :(得分:2)
“ KeyboardEvent事件仅指示用户与键盘上的按键处于低级别的交互作用”。为了访问文本输入,您应该改用输入事件或更改事件。在Blazor中,现在输入事件由change事件包装;也就是说,只有在input元素失去焦点之后,您的代码才能访问新值。但是,您应该做的是定义一个属性,该属性绑定到input元素,可以在代码中进行访问以进行检索:
protected string MyInput {get; set;}
<input type="text" bind="@MyInput" />
以上绑定内部基于更改事件,而不是输入事件(再次,现在在Blazor中是不可能的)
答案 2 :(得分:1)
您可以改用“ oninput”事件。每当输入元素的值更改时,都会调用此事件。它采用一个参数,即UIChangeEventArgs,该参数包含具有Input-elements当前值的Value属性。 例如
<input type="text" oninput="@((ui) => { Foo((string)ui.Value);})"/>
@function {
void Foo(string s)
{
//do stuff
}
}
答案 3 :(得分:1)
不幸的是,您需要 oninput 事件来更新绑定变量。
cd ~/.rstudio/sessions/active/session-45204d30
rm -rf suspended-session-data
答案 4 :(得分:1)
如果只希望输入实时更新绑定值,则可以使用:
<input @bind-value="foo" @bind-value:event="oninput" />
如果您特别想将事件与键盘事件args关联,则可以执行以下操作:
<input @bind-value="foo" @onkeypress="HandleKeyPress" />
@bar
@code {
string foo;
string bar;
void HandleKeyPress(KeyboardEventArgs args)
{
bar = $"You just pressed {args.Key}!";
}
}
答案 5 :(得分:0)
搜索相同的内容。
Blazor WASM (.NET 5) 的正确答案是:
@code {
public string OurField { get; set; }
}
<Element @bind-ElementFieldName="OurField" />
来自 TextEdit
的 Blazorise
示例:
@code {
private string Login { get; set; }
}
<TextEdit @bind-Text="Login"></TextEdit>
答案 6 :(得分:0)
使用 oninput
事件。
<input type="text" @oninput="UpdateText"/>
The text is <label>@Text</label>
@code {
public string Text { get; set; }
private void UpdateText(ChangeEventArgs e)
{
Text = e.Value.ToString();
}
}
答案 7 :(得分:-1)
为简单起见,您可以使用以下代码:
<input bind-value-oninput="@stringValue"/>
@functions {
string stringValue;
}