我试图用YUI自动完成对onBlur和onSelect事件做出不同的反应。我需要隐藏AC,当用户点击其他地方,并把它留在那里选择。问题是,模糊事件也会在select上触发。我找不到一个只有在点击AC外部时才触发的事件,我真的被困在以某种方式捕捉模糊事件,因为它是在选择事件之前触发的。
所以基本上我想要的是这样的输出:点击外部ac: BLUR
select value: select val
但是我得到的是:
点击外部ac: BLUR
select value: BLUR, select val
因为当你选择某些东西时blur事件会触发,而且很可能你无法阻止它,所以在blur上设置一个超时。如果计时器超时,那么就像你通常在模糊时做的那样。
在select事件中,取消定时器。
一些非常松散的伪代码:
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
}