首页 > 解决方案 > Blazor:如果我在 Visual Studio 2019 中设置断点,为什么不会同时触发 onchange 和 onblur 事件?

问题描述

onchange我理解事件和事件之间的区别onbluronchange如果您在文本输入中编辑值(不同于以前的值)然后将输入标记出来,onblur则会触发,而如果单击文本输入,则会触发。如果我创建一个带有事件绑定onblur的文本输入onchange

<input type="text" @onblur="HandleOnBlur" @onchange="HandleOnChange" .../>

然后我有如下处理程序

protected void HandleOnBlur(FocusEventArgs args)
{
    Console.WriteLine("On Blur Call");
}

protected void HandleOnChange(ChangeEventArgs args)
{
    Console.WriteLine("On Change Call");
}

在我的实验中,我使用 Visual Studio 2019 在这两个函数上设置断点。如果我不编辑值,只需单击并单击退出,只会On Blur Call在控制台中打印,这是我所期望的。如果我将值编辑为不同的值,则制表符,仅HandleOnChange被击中并且仅On Change Call被打印。有趣的是,如果我删除了两个断点,On Change Call并且On Blur Call将被打印出来。

我在这里创建了我的 github 复制品:https ://github.com/Owenll66/BlazorTextInput

标签: c#.netvisual-studioasp.net-coreblazor

解决方案


如果您更改文本框的值,它会调用 onchange 事件。如果您将鼠标光标移出,它会调用 onblue 事件。它按预期工作。

如果您不更改文本框的值,只需将鼠标光标放在文本框内,然后退出,仅调用 onblur 事件。

我在我的计算机上使用 Visual Studio 2021 预览版进行实验,它总是会进入 2 个断点内部。Version 93.0.4577.82 (Official Build) (64-bit)我在 Windows 10 pro x64 上使用 Google Chrome 。

在此处输入图像描述


推荐阅读