【发布时间】:2022-10-17 12:54:10
【问题描述】:
我有一个包含输入的父元素:
<div @blur="onLeaveSelect($event)">
<div v-if="searchActivated" >
<input type="text" placeholder="Search..." @mousedown.stop>
</div>
...
</div>
现在单击 input 子元素时,将触发父 div 的 blur 事件。我如何防止这种行为?使用click.stop 禁止冒泡适用于其他元素,但不适用于该输入。
const onLeaveSelect = (evt) => {
if (!evt.currentTarget.contains(evt.relatedTarget)) {
open.value = false;
showDescription.value = false;
searchActivated.value = false;
}
}
像这样,我通过单击输入事件停止了下拉菜单的关闭。
但现在的问题是focusing 输入算作不再关注父 div,这会阻止完全检测到模糊。
【问题讨论】:
-
为什么那里模糊(它的目的/意图是什么)?
-
@depperm 用于关闭下拉菜单。
-
为什么不把它放在靠近下拉菜单的地方呢?
-
@depperm 我不太明白你的意思。带有模糊事件的 div 包括整个下拉列表,以便在外部单击时轻松关闭它。
-
您可以包含整个 div 内容并包含预期的行为吗?
标签: javascript vue.js