如果用户点击“输入/返回”键,如何处理textarea多行输入

时间:2011-11-07 04:54:02

标签: javascript textarea dom

我的编码:

 ...
 <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>
 ...

但它不会识别“输入/返回”键,而是显示“”

非常感谢

2 个答案:

答案 0 :(得分:4)

为了扩展Chris的答案,问题是浏览器正在呈现您编写的文本,就像呈现任何其他html一样,这意味着空格(包括回车)被视为单词分隔符,不是行或段落分隔符。并且多个连续的空格字符被缩减为单个空格。这在html spec

中进一步解释

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

正如Chris建议的那样,你需要用html <br>元素替换字符串中的回车:

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

注意:您应该能够直接使用.value获取textarea的值,而不是说.childNodes[0].nodeValue

注2:我是克里斯所说的关于document.write()的第二句话 - 它通常不是最好的选择。

注意3:如果您正在为非Windows系统提供服务,则可能还需要替换\r

答案 1 :(得分:0)

文本区域使用\n来指定一个新行,这些行应该有效:

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

不确定你是不是只是四处闲逛,但我觉得有必要提一下,一般来说你永远不应该使用document.write()。