使用 Javascript 在文本区域中写一个换行符

Write a newline in a textarea with Javascript

我正在编写一个在多行上生成输出的小 JS 脚本,我想在 ID 为 messagetextarea 中显示此输出。我知道 textarea 不解释 html。由于文本区域是一个 form 标签,我尝试了以下方法来显示我的结果:

但是因为它也是一个打开-关闭标签,所以我假设 .html() 属性在它上面是有效的,而且看起来是有效的,但是当我执行以下操作时:

它不会更新 textarea 中可见的任何内容,但是当我查看控制台并检查元素时,我看到两个标签之间的格式正确的文本。

我能做到的唯一方法是直接在 textarea 中写入文本,如下所示:

<textarea id="message>test&#13;&#10;test</textarea>

生成格式正确的输出,但由于我希望我的 JS 脚本更新它,所以它不相关。

我阅读了很多主题和建议,但 none 似乎回答了我的具体问题:有什么方法可以修改 Javascript 中显示多个文本的文本区域的值行数?

tl;dr

我尝试了以下方法(测试前填写所有文本区域):

$("#button").click( function() {
  $("#ta1").val("test\ntest");
  $("#ta2").val("test&#13;&#10;test");
  $("#ta3").html("test\ntest");
  $("#ta4").html("test&#13;&#10;test");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<p>Fill all the textareas before testing</p>
<button id="button">Test</button>

<p>Test 1 : </p>
<textarea id="ta1"></textarea></br>
<p>Test 2 : </p>
<textarea id="ta2"></textarea></br>
<p>Test 3 : </p>
<textarea id="ta3"></textarea></br>
<p>Test 4 : </p>
<textarea id="ta4"></textarea></br>
<p>Test 5 : </p>
<textarea id="ta5">test&#13;&#10;test</textarea>

和 none 这些测试允许我用多行文本替换 textarea 值。

你有解决办法吗?

正如 JJJ 在评论中正确指出的那样,只需在值中包含 \n

$("#button").click( function() {
  $("#ta1").val("test\ntest");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<button id="button">Test</button>

<p>Test:</p>
<textarea id="ta1"></textarea>

您的尝试失败是因为:

  • "\"被解释为字符串中的反斜杠,那么n只是一个"n"。没有换行符。
  • val 不会解释 HTML.
  • 同第一种情况
  • 这确实有效 - 对于初始值。当 <textarea> 被初始化时,它的值就是它的内容。第一次编辑后,重要的是value 属性,内容不再相关。这就是为什么如果您没有编辑 <textarea> 它会起作用,但如果您编辑了它就不会起作用。

第一个案例最接近工作,你只是用反斜杠做得太过分了。