js DOM事件焦点(JS中的focusblur与click事件解析)

在Javascript中存在一系列的原生DOM事件,事件触发的先后也是有顺序的,今天我们从具体场景出发,看看在Javascript中focus、blur与click事件的触发机制,今天小编就来聊一聊关于js DOM事件焦点?接下来我们就一起去研究一下吧!

js DOM事件焦点(JS中的focusblur与click事件解析)

js DOM事件焦点

前言

在Javascript中存在一系列的原生DOM事件,事件触发的先后也是有顺序的,今天我们从具体场景出发,看看在Javascript中focus、blur与click事件的触发机制。

Javascript

场景

我们需要实现这样一个场景:有一个input输入框和一个button,当input获取焦点时显示button,在input失去焦点时隐藏button,而且在input失去焦点的时候触发button的click事件。效果图如下所示。

效果图

页面代码

首先我们看看页面的html部分代码,如下图所示,在页面我们引入了boostrap。

页面html代码

针对上面的html代码,很多人会直接给出下面的Javascript代码来绑定事件。

Javascript代码

问题

如果我们采用上述Javascript部分代码会发现,我们想要的效果是行不通的。我们会发现在点击button的时候,并不会触发click事件。这是什么原因呢?

这是因为在Javascript中,blur事件先于click事件执行,在blur事件执行时已经隐藏掉button元素,所以button元素的click事件无法触发。

解决方法1

既然遇到问题,就会有对应的解决办法。

首先我们看看第一种解决办法:使用mousedown事件。因为mousedown事件会在blur事件触发之前执行,可以达到上述的目的。

mousedown事件

解决方法2

在使用方法1解决问题时会发现,虽然事件会触发,但是button看起来并没有点击的效果,因为mousedown事件是鼠标按下的事件,不会触发到click事件,所以没有click的效果。

我们可以同时绑定mousedown和click事件来达到这种效果,然后阻止mousedown事件的默认操作,等待click事件触发。

mousedown与click事件

通过方法2,可以很好的解决方法1中存在的问题。

总结

在Javascript中,某些事件的处理顺序为mousedown > blur > mouseup > click,大家只要记住这个顺序,就可以针对不同的场景应用不同的事件。

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页