"模糊"事件被无缘无故触发?

时间:2017-06-29 12:07:06

标签: javascript events blur

我有2个元素。第一个元素有blur个事件,第二个元素有mousedown个事件。第二个元素上的mousedown事件将焦点返回到第一个元素,但第一个元素上的blur由于某种原因被触发,即使第一个元素没有在{{1}之前被聚焦第二个元素。

为什么会这样?这是(某种程度上)期望的行为,还是这种某种错误?

mousedown

https://jsfiddle.net/rsh5aopg/

1 个答案:

答案 0 :(得分:1)

这不是错误,事件序列是:

mousedown
blur
mouseup
click

按下按钮时,会触发mousedown事件。在该侦听器中,您将焦点放在第一个输入上。当然,在mousedown事件之后,模糊事件发生。这会从第一个输入中消除焦点,并且您会看到模糊侦听器代码执行。

您可以将e.preventDefault()添加到mousedown事件中,也可以使用mouseupclick,因为这些都发生在模糊之后。无论哪种方式,第一个输入仍然可以根据需要进行聚焦。