【发布时间】:2020-03-20 23:28:47
【问题描述】:
我目前正在使用 freesolo 自动完成功能,我的特定用例要求在输入文本后面有逗号或空格时创建标签。 Autocomplete 目前在 Enter 事件上创建标签,但我认为 Autocomplete 中还没有内置任何东西支持在任何其他事件上创建标签。我想知道我是否缺少任何东西,或者如果我没有,我该如何解决这个问题?
目前,我正在尝试使用 Autocomplete 中的 onInputChange 属性来捕获传入的字符串。我检查该字符串的逗号和空格,并在成功找到其中一个字符后,我使用手动触发 Enter 事件一些原生 JS 代码。这在某些情况下有效,但并非在所有情况下都适用,并且考虑所有情况变得乏味。这种方法似乎容易出现很多问题,我不相信这是在不同事件上实现标签创建的最佳方法。寻找一些想法。谢谢
onInputChange属性用法:
<Autocomplete
multiple
freeSolo
filterSelectedOptions
id="auto-complete"
options={foo.map(bar => bar.name)}
ref={autoRef}
onInputChange={(e, value) => {
createTagOnEvent(value);
}}/>
在输入中搜索逗号和空格并手动触发 Enter 事件:
const createTagOnEvent = (bar) => {
if (pattern.test(bar)) {
const ke = new KeyboardEvent("keydown", {bubbles: true, cancelable: true, keyCode: 13});
autoRef.current.dispatchEvent(ke);
}
};
【问题讨论】:
标签: javascript reactjs material-ui