【发布时间】:2022-01-28 00:43:31
【问题描述】:
在我的 .razor 页面中,我有一个 InputText,我想要的是在键入后立即更新该数字,特别是每 4 个字符放置一个空格,我该怎么做?
<InputText @bind-Value="oPagos.NumeroEnTarjeta" @onkeydown="@Tecleando" type="number"
onchange="()=>NumberChanged()" id="card-number" placeholder="1111 2222 3333 4444" class="input" maxlength="16" />
那么,
public void Tecleando(KeyboardEventArgs e)
{
//Console.WriteLine(e.Key);
oPagos.NumeroEnTarjeta = generateSpaces(oPagos.NumeroEnTarjeta);
Console.WriteLine(oPagos.NumeroEnTarjeta);
}
我有一个函数,我计划从绑定中获取所有值,即:oPayments.NumberOnCard,每 4 个空格生成一个空格。 这对我不起作用有两个原因。
- 我输入的第一个数字取自 @Onkeydown 事件,但变量 oPagos.NumeroEnTarjeta 为空。
- 我不知道如何更新 InputText 的值,如下图所示,我有效地修改了变量 oPagos.NumeroEnTarjeta,但我无法让用户看到它在文本框中呈现。
我应该采取其他方式还是如何解决现有问题?谢谢。
更新
我成功地做了类似的事情,但有两个不同的事件,onblur 和 onfocus。
我使用onfocus 删除空格,我使用onblur 添加我的空格,但是,我想做的是在写的时候
【问题讨论】:
-
据我了解,您每次用户输入 4 个符号或数字时都尝试添加“”?
-
是的@kanils_你是对的
-
我猜你应该在另一个事件上使用 Tecleando 方法。例如,它可能是 onChange。或者您可以计算按键被按下的次数,而不是添加空格。对于 onChange 事件可以使用该正则表达式。
var cardCode = this.value.replace(/[^\d]/g, '').substring(0,16); cardCode = cardCode !== '' ? cardCode.match(/.{1,4}/g).join(' ') : '';
标签: asp.net-core blazor blazor-webassembly