【发布时间】:2022-01-10 07:10:22
【问题描述】:
我不想在输入之前和输入之后有任何空格,比如“text”和“text”不允许,所以我替换了空格,但是当我们从记事本复制“text”并粘贴到输入并想要删除它会引发错误的空间,例如“无法读取未定义读取目标的属性”。所以当用户给前后空间提供空间时如何自动替换空格
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"
/>
【问题讨论】:
-
如果
target未定义,你可以试试currentTarget。不确定您的 DOM 的确切布局,但这可能是一种解决方法。 -
另外,您需要将
e传递给handleChangeWhiteSpace函数调用 -
在 handleChangeWhiteSpace 我也定义了 replace() 但是当我们想用空格粘贴时它会抛出错误“无法读取未定义读取目标的属性
标签: javascript reactjs regex