我不想在输入之前和输入之后有任何空格,比如“文本”和“文本“不允许,所以我替换白色,但是当我们从记事本复制“文本“并粘贴到输入上时,想要删除空格,它会抛出错误,比如“无法读取未定义的阅读目标的属性”。
const handleKeyDown = (e) => {
if (e.key === " ") {
e.preventDefault();
}
};
const handleChangeWhiteSpace = (e) => {
if (e.target.value.includes(" ")) {
e.target.value = e.target.value.replace(/\s/g, "");
}
};
<MyInput
type="text" style={{width:'240px'}}
error={formik.errors.input && formik.touched.input}
value={formik.values.input}
onBlur={formik.handleBlur}
onChange={(e)=>{formik.handleChange(e);handleChangeWhiteSpace()}}
onKeyDown={handleKeyDown}
name="input"
id="input"
autoFocus={false}
autoComplete="off"
/>
5条答案
按热度按时间brjng4g31#
使用正则表达式,下面的应该可以工作,你可以在regex101上测试它:
sojin建议的更清洁的解决方案
ccrfmcuu2#
取代
与此
要在文本字段中粘贴文本时注册更改,请使用onPaste事件
最终代码
jq6vz3qz3#
use**normalize={(value,valueVal,valueVals)=> value.trimStart()}**after rules{[]} in form.item
用于防止antd输入值前的空白
例如,检查图像中的选定代码==> enter image description here
yzckvree4#
要不允许只发送空格,您可以使用normalizeprop
然后你可以删除这个函数中的所有空格
顺便说一下,这个函数可以用来删除所有的空格
i2byvkas5#
我们可以使用trimStart()和trimEnd()来删除开头和结尾处白色。