使用 Javascript 在文本区域中写一个换行符
Write a newline in a textarea with Javascript
我正在编写一个在多行上生成输出的小 JS 脚本,我想在 ID 为 message
的 textarea
中显示此输出。我知道 textarea 不解释 html。由于文本区域是一个 form
标签,我尝试了以下方法来显示我的结果:
$("#message").val("test\ntest");
将 test\ntest
写入文本区域
$("#message").val("test test");
将 test test
写入文本区域
但是因为它也是一个打开-关闭标签,所以我假设 .html()
属性在它上面是有效的,而且看起来是有效的,但是当我执行以下操作时:
$("#message").html("test\ntest");
$("#message").html("test test");
它不会更新 textarea
中可见的任何内容,但是当我查看控制台并检查元素时,我看到两个标签之间的格式正确的文本。
我能做到的唯一方法是直接在 textarea
中写入文本,如下所示:
<textarea id="message>test test</textarea>
生成格式正确的输出,但由于我希望我的 JS 脚本更新它,所以它不相关。
我阅读了很多主题和建议,但 none 似乎回答了我的具体问题:有什么方法可以修改 Javascript 中显示多个文本的文本区域的值行数?
tl;dr
我尝试了以下方法(测试前填写所有文本区域):
$("#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>
和 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>
它会起作用,但如果您编辑了它就不会起作用。
第一个案例最接近工作,你只是用反斜杠做得太过分了。
我正在编写一个在多行上生成输出的小 JS 脚本,我想在 ID 为 message
的 textarea
中显示此输出。我知道 textarea 不解释 html。由于文本区域是一个 form
标签,我尝试了以下方法来显示我的结果:
$("#message").val("test\ntest");
将test\ntest
写入文本区域$("#message").val("test test");
将test test
写入文本区域
但是因为它也是一个打开-关闭标签,所以我假设 .html()
属性在它上面是有效的,而且看起来是有效的,但是当我执行以下操作时:
$("#message").html("test\ntest");
$("#message").html("test test");
它不会更新 textarea
中可见的任何内容,但是当我查看控制台并检查元素时,我看到两个标签之间的格式正确的文本。
我能做到的唯一方法是直接在 textarea
中写入文本,如下所示:
<textarea id="message>test test</textarea>
生成格式正确的输出,但由于我希望我的 JS 脚本更新它,所以它不相关。
我阅读了很多主题和建议,但 none 似乎回答了我的具体问题:有什么方法可以修改 Javascript 中显示多个文本的文本区域的值行数?
tl;dr
我尝试了以下方法(测试前填写所有文本区域):
$("#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>
和 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>
它会起作用,但如果您编辑了它就不会起作用。
第一个案例最接近工作,你只是用反斜杠做得太过分了。