【发布时间】:2018-05-14 09:23:27
【问题描述】:
我有一个带有 JS focusout 事件的输入字段。在我的输入字段下,我有一个带有建议的自动完成弹出窗口。但是当我点击一个建议时,它会在点击自动完成的事件监听器之前播放焦点!关于如何解决此冲突的任何线索?
输入及其自动完成的图片:
click 事件:
resultsFrom.addEventListener('click', (event) => {
let e;
e = event.target.parentNode;
inputFrom.value = e.getAttribute('data-display');
});
focusout 事件:
inputFrom.addEventListener('focusout', () => {
const list = document.querySelector('#results-from');
let first = list.firstChild;
inputFrom.value = first.getAttribute('data-display');
resultsFrom.innerHTML = '';
});
【问题讨论】:
-
在
click事件中尝试event.stopPropagation()。或者添加一些变量作为标志(例如var clicked = false)并在click事件和focusout中将其设置为真,检查变量是真还是假。然后设置为 false。 -
@KrzysztofJaniszewski 这可能行不通,因为这两个是单独的事件。
stopPropagation()阻止事件冒泡 DOM 树 -
@MátéSafranka 是的,你是对的
标签: javascript dom-events