如果用户点击“输入/返回”,如何处理文本区域多行输入钥匙

发布于 2024-12-14 04:35:00 字数 356 浏览 0 评论 0原文

我的编码:

 ...
 <textarea name="TextArea1" id="TextArea" style="height ; width" ></textarea>
 ...
 <script type="text/javascript">
 var txt_element = document.getElementById("TextArea");
 document.write (txt_element.childNodes[0].nodeValue);
 </script>
 ...

但它无法识别按下的“输入/返回”键,而是显示“”

非常感谢

my coding:

 ...
 <textarea name="TextArea1" id="TextArea" style="height ; width" ></textarea>
 ...
 <script type="text/javascript">
 var txt_element = document.getElementById("TextArea");
 document.write (txt_element.childNodes[0].nodeValue);
 </script>
 ...

but it doesn't recognize "enter/return" key hited instead it shows " "

Many thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

故人如初 2024-12-21 04:35:00

为了扩展 Chris 的答案,问题在于浏览器以与渲染任何其他 html 片段相同的方式渲染您编写的文本,这意味着空格(包括回车符)被视为单词分隔符,而不是行或段落分隔符。并且多个连续的空白字符被压缩为单个空格。 html 规范对此进行了进一步解释。

这与它处理 textarea 元素中的文本的方式不同。

因此,正如 Chris 建议的那样,您需要将字符串中的回车符替换为 html
元素:

var enteredText = document.getElementById("TextArea").value;
var updatedText = enteredText.replace(/\n/g, '<br />');
document.write(updatedText);

注意:您应该能够直接使用 .value 而不是说 .childNodes[0].nodeValue

注 2:我赞同 Chris 关于 document.write() 的说法 - 它通常不是最好的选择。

注 3:如果您适用于非 Windows 系统,您可能还需要替换 \r

To expand on Chris's answer, the problem is that the browser is rendering the text you write in the same way as it renders any other piece of html, which means white space (including carriage returns) is treated as a word separator, not a line or paragraph separator. And multiple consecutive white space characters are condensed down to a single space. This is explained further in the html spec.

This is different to how it treats text within a textarea element.

So as Chris suggested, you need to replace carriage returns in your string with html <br> elements:

var enteredText = document.getElementById("TextArea").value;
var updatedText = enteredText.replace(/\n/g, '<br />');
document.write(updatedText);

Note: you should be able to get the textarea's value directly with .value rather than saying .childNodes[0].nodeValue.

Note 2: I second what Chris said about document.write() - it is usually not the best option.

Note 3: If you're catering for non-Windows system you may also need to replace \r.

浪荡不羁 2024-12-21 04:35:00

文本区域使用 \n 来指定新行,沿着这些思路应该可以工作:

string = document.getElementById("TextArea")childNodes[0].nodeValue;
string = string.replace(/\n/g, '<br />');
document.write('string');

不确定您是否只是在闲逛,但我觉得有必要提到,一般来说您不应该使用 document.txt 。写()。

Text areas use \n to designate a new line, something along these lines should work:

string = document.getElementById("TextArea")childNodes[0].nodeValue;
string = string.replace(/\n/g, '<br />');
document.write('string');

Not sure if you're just goofing around, but I feel compelled to mention that generally speaking you should never use document.write().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文