MUI 自动完成 API:当我粘贴以空格分隔的文本时,在输入事件时会为其创建一个标签。可以在“输入”事件上创建多个标签吗?

Posted

技术标签:

【中文标题】MUI 自动完成 API:当我粘贴以空格分隔的文本时,在输入事件时会为其创建一个标签。可以在“输入”事件上创建多个标签吗?【英文标题】:MUI Autocomplete API: when I paste space-delimited text,on enter event a single tag is created for it. Can multiple tags be created on "enter" event? 【发布时间】:2021-11-15 23:29:29 【问题描述】:

我在我的 reactjs 应用程序中使用 MUI 自动完成控件。现在,如果我粘贴自定义(在选项列表中不可用)以空格分隔的内容,例如3N1CE2CPXEL289419 3N1BC1AP8AL399166,在点击回车按钮时,会为其创建一个标签:Autocomplete API image

所以我有一个场景,用户粘贴空格分隔的文本。是否可以为每个以空格分隔的值创建一个标签,即一个用于 3N1CE2CPXEL289419 的标签和一个用于 3N1BC1AP8AL399166 的标签?

【问题讨论】:

请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。 【参考方案1】:

下面是我们如何实现abv -

                   <Autocomplete
                    multiple
                    limitTags=2
                    id="tags-filled"
                    onChange=onChange
                    size="small"                   
                    onInputChange=onInputChange
                    options=rowData.map((option) => option.vinno)
                    value=autoCompleteValue
                    freeSolo
                    loading
                    //defaultValue=[top100Films[13].title]                    
                    //onSelect=(event) => onSelect(event, 'tags')
                    /* either render tags will work or renderoption */
                    renderTags=(value, getTagProps) =>
                        value.map((option, index) => (
                            <Chip variant="outlined" onDelete=onDelete label=option ...getTagProps( index ) />
                            // <Chip variant="outlined" onDelete=onDelete label=option ...getTagProps( index ) onDelete=onDelete />
                        ))
                    
                    renderInput=(params) => (
                        <TextField
                            ...params                            
                            variant="outlined"
                            label="VinNOs"
                            placeholder="Favorites"
                            onKeyDown=e => 
                                if (e.key === "Enter" && e.target.value) 
                                    let text = e.target.value;
                                    if (text.includes(" ")) 
                                        let vinnos = text.split(" ");
                                        setAutoCompleteValue(autoCompleteValue.concat(vinnos));

                                     else 
                                        setAutoCompleteValue(autoCompleteValue.concat(e.target.value));
                                    
                                
                            
                        />
                    )

【讨论】:

以上是关于MUI 自动完成 API:当我粘贴以空格分隔的文本时,在输入事件时会为其创建一个标签。可以在“输入”事件上创建多个标签吗?的主要内容,如果未能解决你的问题,请参考以下文章

paste命令

在R中读取具有多个空格作为分隔符的文本文件

Linux 文本处理利器--Awk常用命令

MUI 自动完成功能不适用于 react-hook-form

UITextField获取当前编辑的单词

使用drush将以空格分隔的已启用模块列表转储到文本文件中。