javascript - 如何正确处理 onclick 事件和 onblur

标签 javascript onclick dom-events onblur

以下帖子与我之前提出的问题相关here .

尽管这两个问题是独立的,但它们确实与我实现的相同功能 - 预测文本相关。

我遇到的问题与 2 个事件 onbluronclick 的调用方式有关。

这种情况发生在用户在文本框中输入了一些字符并决定单击建议而不是完成输入整个单词之后。

我为每个建议附加了一个 onlick 处理程序。

但是,我的文本框还附加了一个 onblur 处理程序。

问题是 onblur 处理程序应该关闭建议框并销毁其内容。

onlick 处理程序需要内容才能复制单击的 div 的值并将其复制到文本框中。

因此,陷入了困境。如果任何内容已被 onblur 处理程序销毁,我将无法复制任何内容。

如何捕获 onblur 事件,同时确定 onblur 是否是由用户“点击”其中一项建议触发的?

希望我的问题有意义。

最佳答案

我尝试了许多不同的方法,包括将我的文本输入字段和自动填充 div 包装在父 div 中,并在父 div 上设置 onblur - 但没有任何效果。显然你不能在 div 上分配 onblur 事件(因为它一开始就无法获得焦点)。

答案是按照 Seth 的建议在 onblur 事件上设置超时。

onblur="setTimeout(function() {closeSuggestionBox();}, 100);"

我在帖子 here 上找到了对此的很好解释.

关于javascript - 如何正确处理 onclick 事件和 onblur,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23745480/

相关文章:

javascript - 如何使用选择器组合使用 Prototype.js 获取空字段

Javascript onclick 停止工作,多个动态创建的 div

javascript - onclick 属性与脚本中的 onclick

javascript - Greasemonkey Javascript 按键

javascript - 动态加载的 JS 在函数完成后才可用

JavaScript onkeydown, 返回 true,false

javascript - JavaScript 日期中 '01' 和 '1' 之间的差异

javascript - 具有绑定(bind)值的整个 html 文档

javascript - 如何使用 JavaScript 更改表格中的列宽?

jQuery:如果用户点击 div 之外