我有这个input,当聚焦时,它会变成select.

我想要的行为可以用简单的select实现,但我希望进一步添加简单的select不允许的功能.简单地说,当你把‘盒子’聚焦时,你可以查看选项,当你不能时,你就不能.

我try 使用一种状态来实现此逻辑,该状态判断selectinput所在的父级div是否为焦点. 点击输入会按预期显示选项,但是当我试图从列表中 Select 一个选项时,在我可以 Select 它之前,select被隐藏了,我不能 Select 任何东西.

Demo

有没有其他方法来解决这个问题?

推荐答案

问题是另一个可聚焦的元素(select)接收焦点.您无法避免这一点,但您可以更改对此的react :您需要判断导致模糊的元素是否是您的div的后代.如果是,则不需要关闭 Select 框.

将您的onBlur处理程序更改为:

const onBlur = ({ currentTarget, relatedTarget }) => {
    if (!currentTarget.contains(relatedTarget)) {
        setMenuActive(false);
    }
};

Forked demo.请注意,我还将您的状态更改为简单的布尔值,而不是对象.

Javascript相关问答推荐

我的glb文件没有加载到我的three.js文件中

获取表格的左滚动位置

为什么我的includes声明需要整个字符串?

在react js中使用react—router—dom中的Link组件,分配的右侧不能被 destruct ''

单击ImageListItemBar的IconButton后,在Material—UI对话框中显示图像

配置WebAssembly/Emscripten本地生成问题

还原器未正确更新状态

为什么我的导航条打开状态没有在窗口addeventlistener(Reaction Js)中更新?

Next.js服务器端组件请求,如何发送我的cookie token?

在使用位板时,如何在Java脚本中判断Connect 4板中中柱的对称性?

扩展类型的联合被解析为基类型

获取';无法解决导入和导入";slick-carousel/slick/slick-theme.css";';错误

自定义图表工具提示以仅显示Y值

Cherrio JS返回父div的所有图像SRC

Socket.IO在刷新页面时执行函数两次

React Refs不与高阶组件(HOC)中的动态生成组件一起工作

我不知道如何纠正这一点.

每隔3个项目交替显示,然后每1个项目交替显示

用Reaction-RT-Chart创建实时条形图

递增/递减按钮React.js/Redux