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

时间:2018-10-31 10:08:10

标签: javascript html textarea

我正在编写一个小JS脚本,该脚本会在多行上产生输出,并且我想在ID为textarea的{​​{1}}中显示此输出。我知道一个textarea不能解释html。由于textarea是message标记,因此我尝试了以下方法来显示结果:

  • form在文本区域写入$("#message").val("test\\ntest");
  • test\ntest在文本区域写入$("#message").val("test
test");

但是由于它也是一个开闭标签,所以我假设test
test属性在它上是有效的,而且似乎是有效的,但是当我执行以下操作时:

  • .html()
  • $("#message").html("test\\ntest");

它不会更新$("#message").html("test
test");中可见的任何内容,但是当我查看控制台并检查该元素时,我看到了两个标签之间格式正确的文本。

我能做到的唯一方法是直接在textarea中写文本,就像这样:

textarea

这会产生格式正确的输出,但是由于我希望我的JS脚本对其进行更新,因此它不相关。

我阅读了很多主题和建议,但是似乎没有一个答案可以回答我的特定问题:我可以通过任何方式修改Javascript中多行显示文本的textarea的值吗?

tl; dr

我尝试了以下操作(在测试之前填写所有文本区域):

<textarea id="message>test&#13;&#10;test</textarea>
$("#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>值。

您有解决方案吗?

1 个答案:

答案 0 :(得分:1)

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>,但如果您没有编辑的话,它就可以工作的原因。

第一种情况最接近有效,您只是反斜杠而已。