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

Chromium中MUI Autocomplete显示两个清除按钮,如何全部隐藏?

解决MUI Autocomplete在Chromium中显示两个清除按钮的问题

问题背景

当给Autocomplete的InputProps设置type: 'search'时,Chromium系列浏览器会自动为搜索类型输入框添加原生清除按钮,叠加MUI Autocomplete自带的清除按钮后就出现了两个按钮。disableClearable仅能隐藏MUI自带的右侧按钮,无法处理浏览器原生的左侧按钮,且该问题仅在Chromium中出现,Firefox无此现象。

解决方案

通过CSS隐藏浏览器原生的搜索框清除按钮即可,以下是两种实现方式:

方式1:组件内直接添加样式

修改Autocomplete的sx属性,针对webkit内核的搜索框伪元素设置隐藏:

<Autocomplete
  disablePortal
  disableClearable
  id="combo-box-demo"
  options={supported_games}
  sx={{
    width: 300,
    '& input[type="search"]::-webkit-search-cancel-button': {
      display: 'none'
    }
  }}
  renderInput={(params) => <TextField {...params} label="Movie" InputProps={{ ...params.InputProps, type: 'search'}} />}
/>

方式2:全局样式(多组件复用场景)

在项目全局CSS文件中添加以下规则:

input[type="search"]::-webkit-search-cancel-button {
  display: none;
}

原理说明

Chromium为type="search"的input元素默认渲染了清除按钮,对应CSS伪元素为::-webkit-search-cancel-button,通过设置该伪元素display: none,即可隐藏浏览器原生按钮,只保留MUI组件的交互逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 11:55:45