javascript/html/php 捕获 textarea 中的换行符
Posted
技术标签:
【中文标题】javascript/html/php 捕获 textarea 中的换行符【英文标题】:javascript/html/php capture linebreaks in textarea 【发布时间】: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 【参考方案1】:在另一个问题上找到了答案。
JavaScript: How to add line breaks to an HTML textarea?
Javascript 在向服务器提交请求时不会对换行符进行 urlencode。他们基本上消失了。所以你需要在请求之前在javascript中做你自己的urlencoding。
var text2 = text.replace("\n\r"," ");
注意,其他讨论中有一些建议,即 POST 和 GET 请求的 urlencoding 在不同语言中的处理方式不同,但当我测试时,我没有发现两者之间有任何区别。
【讨论】:
【参考方案2】:不修改地存储整个内容有什么问题?我不知道您使用的是什么数据库,但大多数应该支持带换行符的文本字段。
如果这仍然是个问题,可能问题在于使用“\r\n”,您能告诉我们发送到服务器的内容吗?
你的 php 返回的 textarea 也错过了 id,这应该会阻止你多次执行 getText。
【讨论】:
当我存储未修改的文本时,返回的文本不会单独显示。这是将它们转换为至少可见的逗号的基本原理,即未转义,因此您可以看到它们。我不知道在发送到服务器的内容中查看转义字符的好方法。我看到的只是文字。搜索和替换隐藏字符是我知道查看 thrm 的唯一方法以上是关于javascript/html/php 捕获 textarea 中的换行符的主要内容,如果未能解决你的问题,请参考以下文章