我有一个输入元素。在使用JavaScriptkeydown
和keypress
事件进行键入时,我添加了一些过滤和修改文本的功能。
例如,当一个输入接受大写字符时,当你只按"a"(没有移位,没有大写锁定(,你就会得到"a"。
这是有效的,但是输入值绑定根本不起作用。我只是在JS事件上调用preventDefault()
,就这样,绑定被破坏了。
我试着亲自安排这次活动。我发送了新创建的KeyboardEvent
和类型为"change"的CustomEvent
。什么都不管用。我可以在JS事件处理程序中修改输入值,我可以在浏览器中看到更改,但我的C#没有。
我怎样才能做到这一点?我必须手动调用C#来更新绑定吗?或者还有其他方法吗?
该代码应该只适用于最新的Chrome/Firefox浏览器,旧的浏览器可能不受支持。
为什么不在Blazor代码中执行?在你的降价:
<input type="text" @bind-value="MyParamenter" @bind-value:event="oninput" >
和代码
private string myParameter;
private string MyParameter
{
get => myParameter;
set
{
myParameter = value.ToUpper();
}
}
也许,这可以回答您的问题。简而言之,当你想处理TextChanged事件时,你可以这样做:
<MudTextField Label="Some Label Text"
T="string"
Value="person.FirstName"
ValueChanged="(value) => person.FirstName = value.ToUpper()"
Immediate="true" />
";技巧";是将CCD_ 6一分为二:CCD_ 7和CCD_。然后在ValueChanged
中,你可以用C#的力量做任何你想做的事情。
请注意,Blazor从我们这里抽象了JS端,有了一些经验,我学会了在使用Blazor开发时尽可能远离JS端,这让我省去了很多麻烦。