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

使用Material UI InputBase输入搜索结果首字母时输入框失焦问题求助

问题排查与解决方案

可能的原因及对应修复方法

  • 搜索结果点击触发默认焦点转移
    点击搜索结果项时,浏览器会自动将焦点转移到被点击元素,导致InputBase失焦。外层div出现黑边框,是因为浏览器默认给获得焦点的元素添加了outline样式,而这个div意外获得了焦点。

    修复方式:在结果项的点击事件中阻止默认行为,并手动让输入框重新聚焦:

    const inputRef = useRef(null);
    
    const handleResultClick = (e, resultData) => {
      // 阻止浏览器默认的焦点转移行为
      e.preventDefault();
      e.stopPropagation();
      
      // 处理业务逻辑,比如把选中结果填入输入框
      inputRef.current.value = resultData.title;
      
      // 强制让输入框重新获得焦点
      inputRef.current.focus();
    };
    
    // InputBase组件绑定ref
    <InputBase ref={inputRef} placeholder="搜索..." />
    
  • 外层容器意外获得焦点导致黑边框
    即便阻止了结果项的焦点转移,有时候焦点会冒泡到外层div,触发浏览器默认的:focus outline。可以通过CSS直接移除这个样式:

    .search-wrapper:focus {
      outline: none;
    }
    

    或者在点击事件中额外阻止焦点冒泡,确保容器不会获得焦点。

  • 检查InputBase的ref绑定是否正确
    确保你已经通过useRef正确创建并绑定了InputBase的引用,否则无法调用focus()方法重新聚焦。

内容的提问来源于stack exchange,提问作者Suraj Gaire

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 23:57:18