1

我拼命地试图捕捉文本区域中的换行符。我想将 textarea 的内容存储在数据库中,然后在从数据库中提取时将其显示在 textarea 中。textarea 应该作为一个编辑框。在任何时候我都不需要在 html 中显示。

我能够让它在一个普通的 html 页面上工作,该页面通过将 textarea 中的文本转换为行数组、在字符 \r\n 上爆炸并将其分解为逗号分隔来将 textarea 内容发布到服务器行列表。然后,当我想重新显示这些行时,我将逗号替换为 \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>';
4

2 回答 2

1

在另一个问题上找到了答案。

JavaScript:如何向 HTML 文本区域添加换行符?

Javascript 在向服务器提交请求时不会对换行符进行 urlencode。他们基本上消失了。因此,您需要在请求之前在 javascript 中进行自己的 urlencoding。

var text2 = text.replace("\n\r","&#13;&#10;");

请注意,在其他讨论中有一些建议,即 POST 和 GET 请求的 urlencoding 在不同语言中的处理方式不同,但是当我测试时,我没有发现两者之间有任何区别。

于 2012-11-22T16:06:44.450 回答
0

存储未修改的整个内容有什么问题?我不知道您使用的是什么数据库,但大多数应该支持带有换行符的文本字段。

如果这仍然是一个问题,可能问题是使用“\r\n”,你能告诉我们发送到服务器的内容吗?

此外,您的 php 返回的 textarea 是错误的 id,这应该会阻止您多次执行 getText。

于 2012-11-21T13:03:04.187 回答