我在一个React组件中使用了Material UI的自动完成表单。它工作得很好,除了按下ENTER键会清空输入字段之外。我只想要当用户按下ENTER键时输入字段不被清空。我在Stackoverflow上搜索了所有类似的问题,但没有一个解决在自动完成表单中忽略这个键的(它们大多数是处理常规输入表单)。下面列出了我尝试过但无效的所有方法。
如何在这种情况下禁用ENTER键呢?
我已经尝试忽略ENTER键,例如:
如何在这种情况下禁用ENTER键呢?
我已经尝试忽略ENTER键,例如:
onKeyPress={(event) => {return event.key !== 'Enter';}}
我还尝试过通过以下方式阻止自动完成功能中的“Enter”键被视为表单提交(希望它不会清除表单):
onKeyPress={(event) => {
if (event.key === 'Enter') {
event.preventDefault();
return false;
}
}
我甚至尝试过:
onKeyPress={(event) => {
if (event.key === 'Enter') {
event.stopPropagation();
return false;
}
}
是的,我还尝试了在上面两个示例中使用 onKeyDown
而不是 onKeyPress
。
最后,我尝试在 Autocomplete 组件中使用 disableClearable
选项如下:
const onInputChange = useCallback(
(_event: ChangeEvent<{}>, newInputValue: string) => {
debounceFetchData(newInputValue);
},
[debounceFetchData]
);
return (
<section className={classes.container}>
<SearchIcon className={classes.icon} />
<Autocomplete
id="search"
options={options}
disableClearable
getOptionLabel={() => ''}
filterOptions={(x) => x}
fullWidth
freeSolo
onInputChange={onInputChange}
renderInput={(params) => (
<TextField
{...params}
placeholder="Search"
variant="outlined"
size="small"
inputProps={{
...params.inputProps,
'aria-label': 'Search',
}}
/>
)}
...
...
...
/>
onKeyDown
处理程序之前扩展...params.inputProps
。 - testing_22