MUI自动完成:如何防止打开焦点,而是在输入更改时打开?

D10001

我正尝试阻止用户点击后自动完成打开建议的操作。我希望仅在用户开始输入时打开它。似乎没有实现这一目标的工具。是否可以使用onInputChange来切换“自动完成”“打开”道具(布尔)。谢谢

瑞安·科格斯威尔(Ryan Cogswell)

是的,您可以显式控制open道具,如果您要基于已键入内容的用户,那么我建议您也显式控制inputValue道具。

下面是一个实现此目的的方法示例。除了通常指定的道具外,它还指定了onOpen,onClose,onInputChange,open和inputValue道具。

  • onOpenMaterial-UI认为open应将其设置为时,它将被调用truehandleOpen在下面的示例中,当inputValue为空时,将忽略此事件
  • onCloseMaterial-UI认为open应将其设置为时,它将被调用false下面的示例无条件调用,setOpen(false)因此在与默认行为相同的所有情况下,它仍然关闭。
  • handleInputChange在下面的示例中,除了管理inputValue状态外,还open根据值是否为空来切换状态。
/* eslint-disable no-use-before-define */
import React from "react";
import TextField from "@material-ui/core/TextField";
import Autocomplete from "@material-ui/lab/Autocomplete";

export default function ComboBox() {
  const [inputValue, setInputValue] = React.useState("");
  const [open, setOpen] = React.useState(false);
  const handleOpen = () => {
    if (inputValue.length > 0) {
      setOpen(true);
    }
  };
  const handleInputChange = (event, newInputValue) => {
    setInputValue(newInputValue);
    if (newInputValue.length > 0) {
      setOpen(true);
    } else {
      setOpen(false);
    }
  };
  return (
    <Autocomplete
      id="combo-box-demo"
      open={open}
      onOpen={handleOpen}
      onClose={() => setOpen(false)}
      inputValue={inputValue}
      onInputChange={handleInputChange}
      options={top100Films}
      getOptionLabel={option => option.title}
      style={{ width: 300 }}
      renderInput={params => (
        <TextField {...params} label="Combo box" variant="outlined" />
      )}
    />
  );
}

// Top 100 films as rated by IMDb users. http://www.imdb.com/chart/top
const top100Films = [
  { title: "The Shawshank Redemption", year: 1994 },
  { title: "The Godfather", year: 1972 },
  { title: "The Godfather: Part II", year: 1974 }
// and many more options
];

输入时编辑自动完成打开

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何防止自动滚动到焦点输入?

来自分类Dev

如何防止Evince自动打开PDF文件?

来自分类Dev

如何防止Evince自动打开PDF文件?

来自分类Dev

防止箭头键打开自动完成菜单

来自分类Dev

Clockpicker:如何防止单击输入以打开Clockpicker

来自分类Dev

选择更改时打开邮件

来自分类Dev

在jQuery Mobile中输入焦点(单击)时如何打开页面?

来自分类Dev

如何在选择框选项更改时打开引导模态?

来自分类Dev

jQuery自动完成选项卡焦点不应打开列表

来自分类Dev

jQuery自动完成选项卡焦点不应打开列表

来自分类Dev

更改网络位置时,如何防止Windows 7自动更改防火墙设置(将其重新打开)?

来自分类Dev

如何防止F#Interactive右键单击自动打开?

来自分类Dev

如何在IntelliJ中打开自动代码完成功能?

来自分类Dev

jQuery:自定义自动完成列表不会在输入更改时重绘自身

来自分类Dev

如何在焦点更改时停止浏览器自动滚动容器

来自分类Dev

JcomboBox不能在单击时打开,而是将焦点放到它旁边的焦点上

来自分类Dev

jQuery UI自动完成打开位置

来自分类Dev

jQuery自动完成:防止在焦点时替换文本

来自分类Dev

如何防止打开PDF文件?

来自分类Dev

如何防止程序被 Python 打开?

来自分类Dev

如何防止TextBlock获得自动焦点

来自分类Dev

Angular ng-repeat:订单更改时保持输入焦点

来自分类Dev

Angular ng-repeat:订单更改时保持输入焦点

来自分类Dev

Twitter引导程序:如何在输入焦点上打开模式窗口?

来自分类Dev

选择后使mui自动完成保留输入值

来自分类Dev

WPF绑定:输入后源值未更改时,如何防止目标更新

来自分类Dev

如何自动打开“折叠”菜单?

来自分类Dev

当终端已经打开时,如何防止Alfred 2打开并在新窗口中输入终端命令?

来自分类Dev

当生成器或输入在CMake中更改时,如何仅构建自动生成的代码?

Related 相关文章

  1. 1

    如何防止自动滚动到焦点输入?

  2. 2

    如何防止Evince自动打开PDF文件?

  3. 3

    如何防止Evince自动打开PDF文件?

  4. 4

    防止箭头键打开自动完成菜单

  5. 5

    Clockpicker:如何防止单击输入以打开Clockpicker

  6. 6

    选择更改时打开邮件

  7. 7

    在jQuery Mobile中输入焦点(单击)时如何打开页面?

  8. 8

    如何在选择框选项更改时打开引导模态?

  9. 9

    jQuery自动完成选项卡焦点不应打开列表

  10. 10

    jQuery自动完成选项卡焦点不应打开列表

  11. 11

    更改网络位置时,如何防止Windows 7自动更改防火墙设置(将其重新打开)?

  12. 12

    如何防止F#Interactive右键单击自动打开?

  13. 13

    如何在IntelliJ中打开自动代码完成功能?

  14. 14

    jQuery:自定义自动完成列表不会在输入更改时重绘自身

  15. 15

    如何在焦点更改时停止浏览器自动滚动容器

  16. 16

    JcomboBox不能在单击时打开,而是将焦点放到它旁边的焦点上

  17. 17

    jQuery UI自动完成打开位置

  18. 18

    jQuery自动完成:防止在焦点时替换文本

  19. 19

    如何防止打开PDF文件?

  20. 20

    如何防止程序被 Python 打开?

  21. 21

    如何防止TextBlock获得自动焦点

  22. 22

    Angular ng-repeat:订单更改时保持输入焦点

  23. 23

    Angular ng-repeat:订单更改时保持输入焦点

  24. 24

    Twitter引导程序:如何在输入焦点上打开模式窗口?

  25. 25

    选择后使mui自动完成保留输入值

  26. 26

    WPF绑定:输入后源值未更改时,如何防止目标更新

  27. 27

    如何自动打开“折叠”菜单?

  28. 28

    当终端已经打开时,如何防止Alfred 2打开并在新窗口中输入终端命令?

  29. 29

    当生成器或输入在CMake中更改时,如何仅构建自动生成的代码?

热门标签

归档