如何清理 React 中任何输入的格式化文本?
How can I sanitize formatted text for any input in React?
我在使用 redux-forms
中的 Field
组件的应用程序上有几个输入,我正在尝试实现一些允许我将输入保存为纯文本而不是格式化的东西(即,粘贴时应另存为 Eduardo)。我想我可以使用 onPaste 做一些事情,但我不知道如何从用户粘贴的内容中获取纯文本。
编辑:没有实际代码,但出于测试目的,我有这个:
<Field
name="dni"
component={InputWithFormGroup}
label={t('
placeholder={t('
validate={[required, DNIorNIE]}
onPaste={(e) => {
const pastedText = e.clipboardData.getData('text/plain');
console.log('Pasted:', pastedText);
const regex = /(<([^>]+)>| )/ig;
const sanitizedString = pastedText.replace(regex, '');
console.log('Sanitized:', sanitizedString);
}}
/>
而且两个字符串显示完全相同,.
我正在编辑原始答案,因为我现在看到了实际代码。你需要
调用 e.preventDefault(); 并使用 window.document.execCommand('insertText', false, plainText) 覆盖下面的粘贴功能;
<Field
name="dni"
component={InputWithFormGroup}
label={t('
placeholder={t('
validate={[required, DNIorNIE]}
onPaste={(e) => {
e.preventDefault();
const text = (e.originalEvent || e).clipboardData.getData('text/plain');
window.document.execCommand('insertText', false, text);
}}/>
我在使用 redux-forms
中的 Field
组件的应用程序上有几个输入,我正在尝试实现一些允许我将输入保存为纯文本而不是格式化的东西(即,粘贴时应另存为 Eduardo)。我想我可以使用 onPaste 做一些事情,但我不知道如何从用户粘贴的内容中获取纯文本。
编辑:没有实际代码,但出于测试目的,我有这个:
<Field
name="dni"
component={InputWithFormGroup}
label={t('
placeholder={t('
validate={[required, DNIorNIE]}
onPaste={(e) => {
const pastedText = e.clipboardData.getData('text/plain');
console.log('Pasted:', pastedText);
const regex = /(<([^>]+)>| )/ig;
const sanitizedString = pastedText.replace(regex, '');
console.log('Sanitized:', sanitizedString);
}}
/>
而且两个字符串显示完全相同,.
我正在编辑原始答案,因为我现在看到了实际代码。你需要 调用 e.preventDefault(); 并使用 window.document.execCommand('insertText', false, plainText) 覆盖下面的粘贴功能;
<Field
name="dni"
component={InputWithFormGroup}
label={t('
placeholder={t('
validate={[required, DNIorNIE]}
onPaste={(e) => {
e.preventDefault();
const text = (e.originalEvent || e).clipboardData.getData('text/plain');
window.document.execCommand('insertText', false, text);
}}/>