我正在编写一个小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 test</textarea>
$("#button").click( function() {
$("#ta1").val("test\\ntest");
$("#ta2").val("test test");
$("#ta3").html("test\\ntest");
$("#ta4").html("test 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 test</textarea>
值。
您有解决方案吗?
答案 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>
,但如果您没有编辑的话,它就可以工作的原因。第一种情况最接近有效,您只是反斜杠而已。