Javascript 如果单击“选择”(下拉列表),则缺少Keyup事件

Javascript 如果单击“选择”(下拉列表),则缺少Keyup事件,javascript,jquery,html,Javascript,Jquery,Html,我有一个页面,当用户按下一个键(在我的例子中是[Ctrl])时,他们能够以特定的方式与页面元素交互。一旦他们释放密钥,并且keyup事件触发,我将重置一些标志。但我发现,当我在按住键的同时单击select下拉列表时,不会捕捉到keyup事件。我创建了一个快速笔来演示这个问题。我不知道这是否是一个范围问题。目前,我使用jQuery来监听类似于$(document)。在('keyup',(e)=>{})上,但是select的作用域可能不同?我试过一些,但找不到一个有效的 $(文档).on(“向下

我有一个页面,当用户按下一个键(在我的例子中是[Ctrl])时,他们能够以特定的方式与页面元素交互。一旦他们释放密钥,并且keyup事件触发,我将重置一些标志。但我发现,当我在按住键的同时单击select下拉列表时,不会捕捉到keyup事件。我创建了一个快速笔来演示这个问题。我不知道这是否是一个范围问题。目前,我使用jQuery来监听类似于
$(document)。在('keyup',(e)=>{})
上,但是select的作用域可能不同?我试过一些,但找不到一个有效的

$(文档).on(“向下键”,e=>{
如果(如键码==“17”){
$(“span”)。文本(“真”);
}
});
$(文档).on(“键控”,e=>{
如果(如键码==“17”){
$(“span”).text(“false”);
}
});
选择{
宽度:250px;
高度:35px;
}
跨度{
颜色:红色;
}

按住[Ctrl]。按住[Ctrl]键的同时,单击选择。永远不会捕获keyup事件

向下键:错误

测试1 测试2
这是chrome中的一个已知错误:


目前,唯一现实的解决方案是为您的select指定一个
size
属性>1(这使它不是一个下拉列表,而是一个列表),或者使用类似的方法模拟select。

这是一个有趣的方法。我尝试将选择器更改为
窗口
'*'
,同样的行为。我对解决方法不太在行,但我认为这种行为与
选择框
本身有关——您可能必须使用
divs
ul
li
等重新创建选择框。。这是一个有趣的问题。这可能是一个已知的错误,目前除了使用其他html元素模拟select之外,没有其他解决方案: