首次单击时,检测单击onBlur上的选择元素。 (默认是第二次点击)

时间:2011-08-19 01:17:32

标签: javascript javascript-events

我已经阅读了有关检测选择菜单状态的问题,无论是visibleopen还是closed,快速回答是它不是通用的取决于你想要做什么。任何这些答案都没有涵盖我的情况100%。

我需要确定何时关闭选择菜单,当前通过存储变量onblur来实现;但是,select元素不会在第一次单击时失去焦点,而是第二次单击关闭。是否有一个事件我可以检测到第一次点击时发生了什么?或者选择失去焦点在第一次点击关闭而不是第二次点击关闭?寻找纯JavaScript答案,没有jQuery。

以下是一些示例代码:http://jsfiddle.net/BhnH9/1/

2 个答案:

答案 0 :(得分:0)

您可以在文档(或选择的其他一些合适的祖先)上使用常规单击侦听器,并查看select元素是否与document.activeElement匹配。如果是这样,那么它有焦点要么是因为它刚刚获得它或者选择了一个选项。

但是,除了点击之外,还有其他选择选项的方法,例如键盘导航。点击监听器对你没有帮助。

答案 1 :(得分:0)

最近这个帖子有评论,所以我决定再看一下这个问题。我不记得原来的情况,但我确实知道我需要选择下拉以在选择项目后失去焦点。所以,我的jQuery解决方案......我说它不得不是jQuery :)这已经很长一段时间了,我已经换了工作,不知道为什么这是一个要求。

$('select').bind('change', function(e) {
  $(this).trigger('blur');
});

$('select').bind('blur', function(e) {
  alert('select lost focus');
});

这是一个JSFiddle:http://jsfiddle.net/7tUse/