【问题标题】:javascript paste text into a Textarea remove (CR) from CRLFjavascript 将文本粘贴到 Textarea 从 CRLF 中删除 (CR)
【发布时间】:2023-02-07 22:03:19
【问题描述】:

在粘贴到 Textarea 输入后,我需要保留在我的 javascript 前端页面中插入的文本输入的换行符

如果我调试文本区域的 onSumbit() 方法中包含的值,就会发生这种情况

我需要有 CRLF,但图像清楚地显示 CarriageReturn (CR) 已从插入的文本中删除,只有 LineFeed (LF) 仍然存在。

我试图将 css 属性 white-space: pre-wrap 添加到 textarea 但这没有用。

如何保留文本的 CRLF?

谢谢

【问题讨论】:

    标签: javascript html input


    【解决方案1】:

    您在哪里尝试将文本编码为 base64?如果你在前端使用 Javascript 取值,你应该知道该值只包含 LF。如果您在通过 POST 提交正文后在后端执行此操作,那么是的,该值包含 CRLF 并且有问题。

    但我从你的问题描述中猜测你处于第一个 -frontend- 案例中,所以这不是编码的问题。

    因此,当您从文本区域获取值时,您可以执行类似

    value.replace(/
    /g, "
    ").replace(/
    /g, "
    ")
    

    总是得到 CRLF。

    【讨论】:

    • 是的,我在前端案例中,你能解释一下为什么这个值只包含 LF 吗?在将它放入 textarea 之前它确实包含 CRLF 那么为什么以及什么时候 javascript 删除它?
    • 这就是标准所说的。如果放置 CRLF,它们将在编辑后转换为 LF。您可以在值更改后使用 console.log 进行验证。您可以输入类似 console.log({v: e.target.value}) 的内容,这样您就可以清楚地看到控制字符。您也可以尝试添加一个默认值,然后在不编辑的情况下转换为 base64。您应该拥有宝贵的 CR。
    • 有没有办法改变这个标准?
    • 似乎没有办法。我的建议是,当您阅读文本时,1) 将所有 CRLF 转换为 LF,然后 2) 将所有 LF 转换为 CRLF。这样,您将始终在每种情况下获得 CRLF 行(内容是否编辑,初始值包含 CRLF 或 LF)。像 value.replace(/ /G, ” “)。代替(/ /G, ” ") 应该够了
    猜你喜欢
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 2019-10-26
    • 2015-05-13
    • 2013-06-11
    • 2012-08-25
    相关资源
    最近更新 更多