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

如何净化MUI Autocomplete输入?按键输入无法实时过滤无效字符

当前实现

在React项目中使用了MUI Autocomplete组件。

需求目标

希望对输入内容进行净化,阻止用户输入无意义的字符。

尝试方案

创建了一个原生输入框和一个<Autocomplete>组件,为两者都传入了受控值。

const Form = () => {
  const sanitize = value => value.replace(/[^0-9:]/g, '')
  const [value, setValue] = useState('')

  return (
    <>
      <input type="text" value={value} onChange={(e) => { setValue(sanitize(e.target.value)) }} />
      <Autocomplete
        options={['12:00', '13:00', '14:00', '15:00', '16:00', '17:00', '18:00']}
        value={value}
        inputValue={value}
        onChange={(_, value) => { setValue(sanitize(value || '')) }}
        freeSolo
        renderInput={(params) => (
          <TextField {...params} label="Value" value={value} onChange={(e) => {
            setValue(sanitize(e.target.value))
          }} />
        )}
      />
    </>
  )
}

遇到的问题

原生输入框可以正常工作,说明更新逻辑没有问题。但MUI组件表现异常:输入字母时不会被过滤,只有在输入数字后,字母才会消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 23:52:37