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

MUI Autocomplete移动端问题:点击下拉内容时取消输入框焦点

解决MUI Autocomplete移动端点击下拉内元素唤起键盘问题

核心原因

MUI的Autocomplete组件下拉区域的点击事件会向上冒泡,触发组件内部的输入框聚焦逻辑,导致移动端自动唤起键盘。

解决方案

方法1:阻止可交互元素的事件冒泡

在下拉列表内的按钮等可交互元素的点击事件中调用event.stopPropagation(),阻止事件传递到Autocomplete的父级处理逻辑,避免输入框意外获焦。

示例代码:

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

const options = [
  { label: '选项1', id: 1 },
  { label: '选项2', id: 2 },
];

export default function CustomAutocomplete() {
  return (
    <Autocomplete
      options={options}
      renderOption={(props, option) => (
        <li {...props}>
          <ListItemText primary={option.label} />
          <Button
            variant="outlined"
            size="small"
            onClick={(e) => {
              e.stopPropagation(); // 关键:阻断事件冒泡
              console.log('执行按钮操作', option.id);
            }}
          >
            操作
          </Button>
        </li>
      )}
      renderInput={(params) => <TextField {...params} label="选择选项" />}
    />
  );
}

方法2:禁用选择时的自动聚焦(可选)

如果场景不需要在选择选项后让输入框聚焦,可启用disableFocusOnSelect属性,从根源减少输入框意外获焦的可能:

<Autocomplete
  disableFocusOnSelect // 选择选项时不触发输入框聚焦
  // 其他配置属性
/>

效果验证

添加event.stopPropagation()后,点击按钮只会执行自身逻辑,不会触发Autocomplete的输入框聚焦逻辑,移动端键盘就不会被意外唤起。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 04:50:12