我已经阅读了有关检测选择菜单状态的问题,无论是visible,open还是closed,快速回答是它不是通用的取决于你想要做什么。任何这些答案都没有涵盖我的情况100%。
我需要确定何时关闭选择菜单,当前通过存储变量onblur
来实现;但是,select元素不会在第一次单击时失去焦点,而是第二次单击关闭。是否有一个事件我可以检测到第一次点击时发生了什么?或者选择失去焦点在第一次点击关闭而不是第二次点击关闭?寻找纯JavaScript答案,没有jQuery。
以下是一些示例代码:http://jsfiddle.net/BhnH9/1/
答案 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/