首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Blazor -阻止同级事件触发( onclick > onfocusout )

基础概念

Blazor 是一个用于构建交互式 Web UI 的框架,使用 C# 代替 JavaScript 来编写客户端代码。它允许开发者使用 .NET 平台来创建丰富的 Web 应用程序。

相关优势

  1. 性能:由于 Blazor 使用 WebAssembly(Wasm)运行 .NET 代码,因此性能接近原生 JavaScript。
  2. 开发效率:开发者可以使用熟悉的 C# 和 .NET 生态系统,减少开发时间。
  3. 维护性:统一的代码库使得前后端逻辑更容易维护。
  4. 安全性:.NET 平台提供了强大的类型检查和内存安全特性。

类型

Blazor 主要有两种模式:

  1. Blazor Server:服务器端渲染,UI 状态和事件处理在服务器上进行。
  2. Blazor WebAssembly:客户端渲染,整个应用程序在浏览器中运行。

应用场景

Blazor 适用于需要高性能、复杂交互和统一开发体验的 Web 应用程序,如企业级应用、在线工具和游戏。

问题:阻止同级事件触发(onclick > onfocusout)

在 Blazor 中,如果你希望在点击一个元素时阻止其同级元素的 onfocusout 事件触发,可以通过以下方法实现:

原因

onfocusout 事件在元素失去焦点时触发,而 onclick 事件在元素被点击时触发。如果这两个事件绑定在同级元素上,点击一个元素可能会导致另一个元素的 onfocusout 事件触发。

解决方法

你可以使用 JavaScript 的 event.stopPropagation() 方法来阻止事件冒泡,从而防止 onfocusout 事件被触发。

以下是一个示例代码:

代码语言:txt
复制
@page "/event-stop-propagation"

<h3>Event Stop Propagation Example</h3>

<input type="text" @bind="inputValue" @onfocusout="HandleFocusOut" />
<button @onclick="HandleClick">Click Me</button>

@code {
    private string inputValue = "";

    private void HandleFocusOut(BlurEventArgs e)
    {
        Console.WriteLine("Focus Out Event Triggered");
    }

    private void HandleClick()
    {
        Console.WriteLine("Click Event Triggered");
        // 阻止事件冒泡
        JSRuntime.InvokeVoidAsync("stopPropagation");
    }
}

wwwroot/index.htmlwwwroot/_Host.cshtml 中添加以下 JavaScript 代码:

代码语言:txt
复制
<script>
    function stopPropagation() {
        event.stopPropagation();
    }
</script>

参考链接

通过这种方式,你可以在点击按钮时阻止 onfocusout 事件的触发,从而实现所需的行为。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Asp.net Razor组件的事件与HTML事件对比

    在 ASP.NET Razor 中,我们可以创建自定义的组件(通常称为“Razor 组件”或“Blazor 组件”),并为这些组件定义事件。...ASP.NET Razor 组件中的事件在 ASP.NET Razor 中(特别是在 Blazor 框架中),我们可以为组件定义事件,这样组件的使用者就可以订阅这些事件并在事件发生时执行特定的代码。...; }}在这个例子中,当按钮被点击时,OnClickCallback 方法会被调用,它会触发 OnClick 事件。...使用场景:ASP.NET Razor 组件事件:当需要创建可重用的 UI 组件,并希望这些组件能够触发服务器端事件时,应使用 Razor 组件事件。...例如,在 Blazor 应用程序中创建自定义的表单控件、数据展示组件等。HTML 事件:当需要在浏览器端直接响应用户交互,如显示提示信息、更新页面元素等简单操作时,可以使用 HTML 事件

    17410

    利用AdvancedTimer定时刷新页面

    组件 高级计时器:包装到 Blazor 组件中的计时器对象,用于对已用事件执行异步操作。 AdvancedTimer元件 此组件不呈现任何 HTML 元素。它被包装到一个组件中,以便于使用。...发生次数:时间 { get; set; } (默认值:Times.Once()) 触发的次数Times。...功能 过时(将 IsEnabled 设置为 true):Start(): void Start() 启动内部计时器,该计时器将在给定发生时间的设置延迟和触发事件后启动。...已过时(将 IsEnabled 设置为 false):Stop():void Stop() 停止内部计时器,不再触发任何事件。...将在给定的发生时间内触发事件。 Dispose():实现 IDisposable 接口 组件实现IDisposable接口 Blazor 框架将在从渲染树中删除父级时调用它。

    1.2K10

    Blazor学习之旅(5)数据绑定

    对于上面的例子来说,当在文本框中输入了数据时,只有当离开文本框或选择按下Enter键或者Tab键,才会触发DOM onchange事件让h1标签的内容发生改变。...假设,我们希望在文本框中输入任何内容时,都会触发h1标签内容的更改。...这个事件就不再是DOM onchange事件了而是DOM oninput事件,因此,我们可以借助 @bind-value 和 @bind-value:event 指令来绑定到oninput事件: @page...同时,我们也注意到在Blazor事件回调(委托)的统一类型为:EventCallback。我们在子组件中使用的是InvokeAsync()方法也说明它是线程安全的。...(2)事件通知是自底向上流动,即子组件的ChangeValue方法都会调用EventCallback来向上通知。 最终效果: 小结 本篇,我们了解了数据如何在Blazor中进行数据的绑定。

    50520

    Blazor练习2

    个人练手笔记,对照官网练习.想学Blazor可以先看官网. 什么是 Razor 组件? Razor 文件定义了构成部分应用 UI 的组件。...类包括常见 UI 元素,如状态、呈现逻辑、生命周期方法和事件处理程序。 尝试使用计数器 在正在运行的应用中,单击左侧边栏中的“计数器”选项卡导航到计数器页面。随后应会显示以下页面。...递增网页中的计数器值通常需要编写 JavaScript,但借助 Blazor,可使用 C#。 可在 Pages/Counter.razor 处找到 Counter 组件的实现。..."/counter" Counter Current count: @currentCount <button class="btn btn-primary" @onclick...每次选择“单击我”按钮时会出现以下情况: 触发点击事件。 调用 IncrementCount 方法。 currentCount 递增。 呈现组件来显示更新后的计数。

    1.8K11

    jquery 事件冒泡、阻止事件冒泡 - event.stopPropagation()

    什么是事件冒泡 在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播...事件冒泡的作用 事件冒泡允许多个操作被集中处理(把事件处理器添加到一个父级元素上,避免把事件处理器添加到多个子级元素上),它还可以让你在对象层的不同级别捕获事件。...事件冒泡机制有时候是不需要的,需要阻止掉,通过 event.stopPropagation() 来阻止 阻止上面点击黄色div的click()冒泡传递 ?...设置了阻止冒泡传递之后,那么click()事件就不会传递到father和grandfather的事件,所以只有一个alert()弹出。 完整事件冒泡示例代码 <!...: return false; 好,下面将阻止事件冒泡的方法写成return false;来看看。

    6K41

    【炫丽】从0开始做一个WPF+Blazor对话小程序

    内容如下,引入了一个命名空间Microsoft.AspNetCore.Components.Web,这是Razor常用命名空间,包含用于向 Blazor 框架提供有关浏览器事件的信息的类型。...WPF默认窗体的边框,运行程序如下:看上图,点击窗体中的按钮(其实是Razor组件的按钮),但未执行按钮点击事件,且窗体消失了,这是怎么回事?...再尝试把Tab移到标题栏,前面有提过的效果:上面的效果,代码修改如下,删除了原标题栏代码,将窗体操作按钮放到了MToolbar里面,并使用MToolbar添加了双击事件、鼠标按下、释放事件实现窗体拖动:...多窗体消息通知一般C/S窗体之间通信使用委托、事件,而在WPF开发中,可以使用一些框架提供的抽象事件订阅\发布组件,比如Prism的事件聚集器IEventAggregator,或MvvmLight的Messager...private int tagCount = 6; protected override void OnInitialized() { // 订阅业务消息,在主窗口点击桃心按钮时触发

    8.1K60

    ASP.NET Core Blazor Webassembly 之 数据绑定

    上一次我们学习了Blazor组件相关的知识(Asp.net Core Blazor Webassembly - 组件)。这次继续学习Blazor的数据绑定相关的知识。当代前端框架都离不开数据绑定技术。...使用@进行绑定 @page "/counter" Current count: @currentCount <button class="btn btn-primary" @onclick...要知道VUE的双向绑定可是实时同步的,那么Blazor如何做到在输入的同时就更新值呢,答案是使用@bind:event来指定回写的激发事件,我们改成“oninput”事件就可以实现: userName...到这里我已经无语了,最后我只能在子组件直接添加一个按钮,修改完后点击保存来触发InvokeChanged事件,这样子是可以的: ====================child============...WebAssembly ASP.NET Core Blazor 初探之 Blazor Server

    4.8K30

    结合使用 C# 和 Blazor 进行全栈开发

    ModelBase 类包含 Blazor 客户端应用程序或服务器应用程序可用来确定是否有任何验证错误的方法。它还会在此模型更改时触发事件,以便客户端能够更新 UI。...然后,它触发 CheckRules 方法,以对相应字段验证所有规则。Blazor 客户端使用此方法,以在用户在输入文本框中键入内容的同时更新值。...如果此模型中的值已更改或在内部错误字典中添加或删除了验证规则,便会触发这个事件Blazor 客户端侦听此事件,并在事件触发时更新 UI。..."collapse" : null) onclick=@ToggleNavMenu> <li class="nav-item px-...输入文本框的 oninput <em>事件</em>连接到 OnFieldChanged 处理程序。每当输入更改,都会<em>触发</em>此<em>事件</em>。

    6.7K40

    【炫丽】从0开始做一个WPF+Blazor对话小程序

    内容如下,引入了一个命名空间Microsoft.AspNetCore.Components.Web,这是Razor常用命名空间,包含用于向 Blazor 框架提供有关浏览器事件的信息的类型。...释放事件实现窗体拖动: <!...多窗体消息通知 一般C/S窗体之间通信使用委托、事件,而在WPF开发中,可以使用一些框架提供的抽象事件订阅\发布组件,比如Prism的事件聚集器IEventAggregator,或MvvmLight的Messager...上面是一些套话,站长根据Prism的事件聚集器和MvvmLight的Messager源码阅读,简单封装了一个Messager,可以适用于一般的业务需求。...private int tagCount = 6; protected override void OnInitialized() { // 订阅业务消息,在主窗口点击桃心按钮时触发

    10.3K20

    ASP.NET Core Blazor Webassembly 之 组件

    它封装html代码,封装业务逻辑,对外提供属性事件等信息,它完完全全就是个组件,只是用户控件跑在服务端,而现在的组件大多数直接跑在前端。...新建Blazor Webassembly项目 前几天的build大会,Blazor Webassembly已经正式release了。我们更新最新版的Core SDK就会安装正式版的模板。 ?...组件事件 我们的组件当然也可以提供事件,已供外部订阅,然后从内部激发来通知外部完成业务逻辑,实现类似观察者模式。继续改造ColorPanel,当点击时候对外抛出事件。...使用EventCallback、EventCallback 来定义事件: <div class...相关内容: ASP.NET Core Blazor 初探之 Blazor WebAssembly ASP.NET Core Blazor 初探之 Blazor Server

    1.6K30
    领券