【问题标题】:How can I not react to blur event on YUI autocomplete select如何不对 YUI 自动完成选择上的模糊事件做出反应
【发布时间】:2014-06-03 16:37:49
【问题描述】:
我正在尝试使用 YUI 自动完成对 onBlur 和 onSelect 事件做出不同的反应。我需要隐藏 AC,当用户单击其他地方并将其保留在选择时。问题是,一个模糊事件也被触发 onSelect 。我找不到只有在 AC 外部单击时才会触发的事件,并且在选择的情况下我真的无法以某种方式捕获模糊事件,因为它是在选择事件之前触发的。
所以基本上我想要的是这样的输出:
点击外部交流:BLUR
选择值:选择值
但我得到的是:
点击外部交流:BLUR
选择值:BLUR,选择值
这会导致选择时隐藏 AC。
【问题讨论】:
标签:
javascript
events
autocomplete
onblur
yui-autocomplete
【解决方案1】:
由于当您选择某些内容时会触发 blur 事件,并且您可能无法阻止该事件,因此在 blur 设置超时。如果计时器超时,则执行通常在模糊时执行的操作。
在选择事件中,取消定时器。
一些非常松散的伪代码:
var blurTimer = null;
function handleBlur() {
blurTimer = setTimeout(function() {
// do what you normally do onblur
}, 50);
}
function handleSelect() {
clearTimeout(blurTimer);
// do what you normaly do on select
}