我正在使用Select
from开发下拉菜单rebass
。当我使用键盘浏览页面时,当我来到下拉菜单并按空格键或回车时,我希望打开下拉菜单。我在下拉列表周围添加了一个 Box 容器,并且一个onKeyDown
事件将直接通过 ref 获取 html 元素,并且在按下 enter 或空格时将打开下拉列表。这是它的外观:
<Box
onKeyDown={e => {
if ((e.Key == "Enter" || e.keyCode == 32) && selectRef =! null &&
selectRef.current != null) {
selectRef.current.focus()
}
}}>
<Select ref={selectRef}>
....
</Select>
</Box>
当我使用 Tab 浏览页面时,如果我按 Enter,当焦点位于下拉菜单上时,下拉菜单会打开 - 它的工作方式与预期相同,但如果我按空格键,下拉菜单的焦点将丢失,并且下拉菜单没有打开。如果我在空间上按两次,下拉菜单会打开。有人可以帮我弄这个吗?为什么按一次空格键会失去焦点?还有另一种方法可以做到这一点(按一下空格打开下拉菜单)?