You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Material UI的Select输入框中使用onFocus事件?

Material UI Select 输入框添加onFocus事件后无法获取焦点的解决方法

当给带select属性的TextField直接绑定onFocus/onBlur时,会出现无法获取焦点的问题——这是因为启用select属性后,TextField底层基于Select组件实现,直接绑定在TextField上的焦点事件会被Select的内部逻辑覆盖,导致异常。

正确的做法是把onFocus和onBlur通过InputProps传递给内部的输入元素,修改后的代码如下:

import { TextField, Button } from '@mui/material';

const Form = ({ handleChange, handleFocus, handleBlur, handleSubmit }) => {
  return (
    <form onSubmit={handleSubmit}>
      <TextField
        fullWidth
        select
        onChange={handleChange}
        InputProps={{
          onFocus: handleFocus,
          onBlur: handleBlur,
        }}
      />
      <Button variant="contained" type="submit">Submit</Button>
    </form>
  );
};

export default Form;

如果需要监听Select组件本身的焦点状态(比如下拉面板展开前后的焦点变化),可以通过SelectProps绑定事件:

<TextField
  fullWidth
  select
  onChange={handleChange}
  SelectProps={{
    onFocus: (e) => {
      // 这里处理Select组件的焦点逻辑
    },
    onBlur: (e) => {
      // 这里处理Select组件的失焦逻辑
    }
  }}
/>

内容的提问来源于stack exchange,提问作者Md Muaz Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 17:25:21