我拼命想要捕捉textarea中的换行符。我想将textarea的内容存储在数据库中,然后在从数据库中提取时将其显示在textarea中。 textarea应该作为编辑框。在任何时候我都不需要以html显示。
我能够在普通的html页面上工作,将textarea内容发布到服务器,方法是将文本从textarea转换为行数组,在字符\ r \ n上爆炸,并将其插入到以逗号分隔的行列表。然后,当我想重新显示这些行时,我用\ n替换逗号,并使用换行符获取文本,我可以在textarea中显示。有点黑客但它有效。
然而,当使用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>';
答案 0 :(得分:1)
在另一个问题上找到答案。
JavaScript: How to add line breaks to an HTML textarea?
Javascript在向服务器提交请求时不会对其进行urlencode换行。他们基本上消失了。因此,您需要在请求之前在javascript中执行自己的urlencoding。
var text2 = text.replace("\n\r"," ");
请注意,在其他讨论中有一些建议,即POST和GET请求的urlencoding在不同语言中的处理方式不同,但是当我测试时,我并没有区别。
答案 1 :(得分:0)
存储未修改的整个内容有什么问题?我不知道你正在使用什么数据库,但大多数应该支持带换行符的文本字段。
如果仍然存在问题,可能问题是使用“\ r \ n”,您能告诉我们发送到服务器的内容吗?
另外你的php返回的textarea是错误的id,这会阻止你多次使用getText。