【发布时间】:2012-11-09 16:17:11
【问题描述】:
我正在拼命地尝试捕获文本区域中的换行符。我想将 textarea 的内容存储在数据库中,然后在从数据库中提取时将其显示在 textarea 中。 textarea 应该作为一个编辑框。在任何时候我都不需要在 html 中显示。
我能够让它在一个普通的 html 页面上工作,该页面通过将 textarea 中的文本转换为一个行数组,在字符 \r\n 上爆炸,并将其分解为逗号分隔的行列表。然后,当我想重新显示这些行时,我将逗号替换为 \n,并获取可以在文本区域内显示的带有换行符的文本。有点破解,但它的工作原理。
但是,当我不使用 html 将 textarea 内容发布到服务器时,它似乎不起作用,而是使用 javascript 中的 getElementByID 将它们拉出来,然后在 javascript 中发布到服务器。
当我使用 html 获取 textarea 内容并在 \r\n 上展开时,我得到一个包含与行一样多的元素的数组。
但是,当我在 javascript 中使用 getElementByID 拉取 textarea 内容并在 \r\n 上展开时,我只会在行运行的数组中获得一个元素。换句话说,我没有得到换行符
有人知道为什么在 javascript 中拉取文本时换行符会消失,并对如何在 javascript 中保留换行符有任何建议吗?
谢谢。
缩写代码: javascript
getText() {
var textobj = document.getElementById("text");
var text = textobj.value;
...some code for AJAX
document.getElementById("droptext").innerHTML=xmlhttp.responseText;
... some more code for Ajax
xmlhttp.open("GET","savetext.php?text="+text,true);
xmlhttp.send();
}
html
<div id="droptext"><textarea id="text"><textarea></div>
<a href="javascript:void(0);" onclick="getText();">Save Text</a>
php
$text = $_GET['text'];
$textarray = explode("\r\n", $text);
$text = implode(",",$textarray); //converts to comma delimited list
...store in database
...fetch from database and echo text back for editing
$text = $row['text'];
$text = str_replace( ",", "\n", $text);
echo '<textarea>'.$text.'</textarea>';
【问题讨论】:
-
如我所见,'document.getElementById("droptext").innerHTML=xmlhttp.responseText' 会删除你的'text' texarea
标签: javascript textarea line-breaks