【问题标题】:How can I sanitize formatted text for any input in React?如何清理 React 中任何输入的格式化文本?
【发布时间】:2021-07-15 09:35:50
【问题描述】:

我在使用来自redux-formsField 组件的应用程序上有几个输入,我正在尝试实现一些允许我将输入保存为纯文本而不是格式化的东西(即???? ????????????????????????粘贴时应保存为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 = /(<([^>]+)>|&nbsp;)/ig; 
        const sanitizedString = pastedText.replace(regex, '');
        console.log('Sanitized:', sanitizedString);
    }}
/>

两个字符串显示的完全一样,????????????????????????????.

【问题讨论】:

    标签: javascript reactjs formatting


    【解决方案1】:

    我正在编辑原始答案,因为我现在看到了实际代码。你需要 调用 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);
    }}/>
    

    【讨论】:

    • 这样做仍然给我同样的问题,因为格式似乎是 RTF 而不是 HTML。实际上,执行event.clipboard.getData('text/html') 会返回以下html:&lt;meta charset=\"UTF-8\"&gt;&lt;span style=\"font-style: normal; font-variant-caps: normal; font-weight: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; widows: auto; word-spacing: ..."&gt;???????&lt;/span&gt; 如您所见,它仍然在那里格式化。
    • @GonzaloGarcia 如果将其更改为 event.clipboard.getData('text/plain') 会发生什么?我认为它应该给你你想要的。
    • @GonzaloGarcia 我已经编辑了答案,如果它对你有用,请将其标记为正确。
    • 我仍然得到文本为???????,即使我尝试将其作为文本/纯文本
    • 嗯,这很奇怪。看看这个>>jsbin.com/noyoquxipa/edit?js,output也许只尝试使用 event.clipboard.getData('text')
    猜你喜欢
    • 2019-09-01
    • 2023-03-17
    • 2013-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多