我有2个元素。第一个元素有blur
个事件,第二个元素有mousedown
个事件。第二个元素上的mousedown
事件将焦点返回到第一个元素,但第一个元素上的blur
由于某种原因被触发,即使第一个元素没有在{{1}之前被聚焦第二个元素。
为什么会这样?这是(某种程度上)期望的行为,还是这种某种错误?
mousedown
答案 0 :(得分:1)
这不是错误,事件序列是:
mousedown
blur
mouseup
click
按下按钮时,会触发mousedown
事件。在该侦听器中,您将焦点放在第一个输入上。当然,在mousedown事件之后,模糊事件发生。这会从第一个输入中消除焦点,并且您会看到模糊侦听器代码执行。
您可以将e.preventDefault()
添加到mousedown事件中,也可以使用mouseup
或click
,因为这些都发生在模糊之后。无论哪种方式,第一个输入仍然可以根据需要进行聚焦。