如何将换行符从 HTML div 复制到 jQuery 中的 textarea?

Posted

技术标签:

【中文标题】如何将换行符从 HTML div 复制到 jQuery 中的 textarea?【英文标题】:How to copy newline characters from HTML div to textarea in jQuery? 【发布时间】:2011-10-18 08:05:30 【问题描述】:

考虑以下 html 页面片段:

<div id='myDiv'>
    Line 1.<br />
    Line 2<br />
    These are &ltspecial&gt; characters &amp; must be escaped !@@&gt;&lt;&gt;
</div>
<input type='button' value='click' id='myButton' />
<textarea id='myTextArea'></textarea>

<script>
    $(document).ready(function () 
        $('#myButton').click(function () 
            var text = $('#myDiv').text();
            $('#myTextArea').val(text);
        );
    );
</script>

首先,有一个id为myDiv的div元素。它包含一些文本,类似于在我的生产网站运行时从 SQL 数据库中检索到的文本。

接下来,有一个按钮和一个文本区域。我希望myDiv 中的文本在单击按钮时出现在文本区域中。

但是,使用我提供的代码,换行符被删除了。考虑到转义特殊字符是绝对不可协商的,我该怎么办?

【问题讨论】:

我应该补充一点,从文本区域中的用户输入读取换行符对我来说一直没有问题。问题在于在文本区域中设置文本。到目前为止,我找到的唯一解决方案是将文本保存在序列化字符串中,但这真的感觉像是 KLUDGE。 在 Chrome 中为我工作。 jsfiddle.net/jasongennaro/8P8fH 【参考方案1】:

您的代码在 Firefox 和 Chrome 中都非常适合我:http://jsfiddle.net/jYjRc/

但是,如果您的客户端不符合您的要求,请将 &lt;br&gt;s 替换为换行符。

编辑:在 IE7 中测试并且代码中断。所以我用我的建议更新了小提琴:http://jsfiddle.net/jYjRc/1/

【讨论】:

这很有趣。我什至很少在 Firefox 中测试我的代码,因为我们是一家仅限 IE 的商店 :-( :-( :-( 不幸的是,您用换行符替换 &lt;br&gt;s 的建议不起作用,因为 $('#myTextArea').val() 返回 Line 1.Line 2These... 而没有任何换行的迹象。 您在 jsfiddle 上链接的解决方案对我不起作用。它使换行符正确,但特殊字符不会被转义。这将使普通用户无法使用这些字符并使它们受到来自恶意用户的 XSS 攻击。到目前为止,我倾向于像以前一样只使用序列化字符串。 您必须具体说明要转义的字符。 我需要所有可能不安全的字符转义。 AFAIK,这意味着 和 &【参考方案2】:

你的 HTML 像这样:

<div id='myDiv'><pre>
Line 1.
Line 2
These are &ltspecial&gt; characters &amp; must be escaped !@@&gt;&lt;&gt;
</pre></div>

现在.text() 将返回与您在&lt;pre&gt; 标记中指定的文本完全相同的文本,即使在 IE 中也是如此。

【讨论】:

以上是关于如何将换行符从 HTML div 复制到 jQuery 中的 textarea?的主要内容,如果未能解决你的问题,请参考以下文章

从 textarea 复制到 div,保留换行符

将textarea的文本复制到带有换行符的div中

如何通过可内容编辑的div输入将元素的换行符(格式)保留在列表中?

如何将空格和换行符从 TEXTAREA 转换为 html

如何扩展 iFrame/将内容从 iFrame 移动到 div? [复制]

vue js如何将值从文本框复制到div