gpt4 book ai didi

asp.net-core - 使用 Ctrl +V 组合键时,有没有办法更新附加到 Blazor 中的输入文本项的绑定(bind)变量?

转载 作者:行者123 更新时间:2023-12-05 01:14:13 28 4
gpt4 key购买 nike

我有这个输入,用于捕获电话号码。当用户输入数字并按下 “Enter” 键时,将触发方法“KeyWasPressed”并进行一些验证。这按预期工作但是......

例如,当用户从 Excel 中复制并粘贴数字时,变量 @Phone 不会更新其值,因此当用户按下 “Enter” 时验证发送的键和空值。

当一些文本被粘贴到输入控件时,有没有办法刷新/更新 @Phone 变量?

这是我的代码片段:

<input type="number" class="form-control" @bind="@Phone" @onkeypress="@(async e => await KeyWasPressed(e))" placeholder="Client Phone Number" />

@code {

string Phone { get; set; }

private async Task GetClientInfo()
{
if(String.IsNullOrWhiteSpace(Phone))
{
notificationMessages = $"Add a phone number";
}
else
{
showSpinner = true;

clientInfo = await ApiHelper.GetClientInfoByPhone(Phone);

if(clientInfo != null)
{
var singleViewId = clientInfo?.SingleViewId;
var customerNumber = clientInfo?.Accounts?.FirstOrDefault().CustomerNumber;
var status = clientInfo?.Accounts?.FirstOrDefault().Status;
showClientInformation = true;

var CrossSell = clientInfo?.Accounts[0]?.CrossSell;


}
else
{
showClientInformation = false;
notificationMessages = $"No client data for this phone ({Phone})";
}

showSpinner = false;
}
}

private async Task KeyWasPressed(KeyboardEventArgs args)
{
if(args.Key == "Enter")
{
//await GetClientInfo();
}
}
}

最佳答案

直接解决方案:

只需使用@bind-value="@Phone"@bind-value:event="oninput":


<input type="number" @bind-value="@Phone" @bind-value:event="oninput"
@onkeyup="@OnUserFinish"/>
<p>@clientInfo</p>

@code {
protected string Phone { get; set; }
protected string clientInfo {get; set;}

private async Task OnUserFinish(KeyboardEventArgs e)
{
if (e.Key == "Enter")
clientInfo = await Fake_ApiHelper_GetClientInfoByPhone(Phone);
}

private async Task<string> Fake_ApiHelper_GetClientInfoByPhone(string phone)
{
await Task.CompletedTask;
return $"Client phone: {phone}";
}
}

奖励轨道:

转向用户友好的去抖动版本:

@using System.Timers;

<input type="number" @bind-value="@Phone" @bind-value:event="oninput"
@onkeyup="@HandleKeyUp"/>
<p>@clientInfo</p>

@code {
protected string Phone { get; set; }
protected string clientInfo {get; set;}
private System.Timers.Timer aTimer;

protected override void OnInitialized()
{
aTimer = new System.Timers.Timer(250);
aTimer.Elapsed += OnUserFinish;
aTimer.AutoReset = false;
}

void HandleKeyUp(KeyboardEventArgs e)
{
// remove previous one
aTimer.Stop();

// new timer
aTimer.Start();
}

private void OnUserFinish(Object source, ElapsedEventArgs e)
{
InvokeAsync( async () =>
{
clientInfo = await Fake_ApiHelper_GetClientInfoByPhone(Phone);
StateHasChanged();
});
}

private async Task<string> Fake_ApiHelper_GetClientInfoByPhone(string phone)
{
await Task.CompletedTask;
return $"Client phone: {phone}";
}
}

关于asp.net-core - 使用 Ctrl +V 组合键时,有没有办法更新附加到 Blazor 中的输入文本项的绑定(bind)变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59079326/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com