在单表单字段中的多个段落 - jquery附加在keydown上

问题描述:

我有一个非常基本的CMS,我已经将PHP和MySQL放在一起。一切都很好,除非我找不到让textarea字段能够包含多个段落的方法(例如,博客文章,详细的服务描述)。数据存储在MySQL中,段落之间为<br>,但是当我将它回调显示时,所有的中断都被删除。在PHP中没有任何东西会拉出html(不修剪html实体,替换字符串等)。理想情况下,我可以将光标包装到<p></p>中,就像我现在输入的textarea一样。在单表单字段中的多个段落 - jquery附加在keydown上

今天我一直在尝试JQuery。

<script type="text/javascript"> 
$(document).ready(function(){ 
$('#thetest').keydown(function(event) { 
if (event.keyCode == '13') { 
    $('#thetest').append('<p>Test</p>'); 
}); 
}); 
</script> 

<form action="test_upload.php" enctype="multipart/form-data" method="POST"> 
<p>Content: </p> 
<textarea wrap="virtual" id="thetest" name="thetest" value="" 
autocomplete="off" rows="20"cols="100"> 
</textarea> 
<input type="submit" name="submit" value="Upload" /> 
</form> 

如果任何人都可以指出我正确的方向,我将不胜感激。我认为会有一个jQuery插件来处理它的表单,但我没有找到。首先十分感谢。

+1

你可以使用TinyMCE吗? http://tinymce.moxiecode.com/ – captainclam 2011-05-16 19:06:50

+0

Textareas只能用'\ n'作为换行符来保存纯文本。使用像@captainclam建议的TinyMCE,或者与自己的可信度告诫相抗争。 – DarthJDG 2011-05-16 21:48:20

您的用户是在段落标签中输入的,还是你想要它所见即所得的风格?如果它是前者,你就不应该有问题(如果你这样做,你可以在进入之前调用htmlentities(),并在你获取时进行解码)。如果是后者,我会在将它放入数据库之前处理$ _POST ['thetest']字符串。在存储它之前,您可以使用<p></p>对您的换行符进行preg_replace(),并添加更多换行符以使其可读。

或者你可以用<pre>欺骗只是为了保持空白,但是这不会是语义上负责:对

+0

我的用户没有输入任何标签,我正在看所见即所得。自从发布原始问题以来,我已经开始使用CKEditor Jquery插件并且它可以工作,但是我想知道如何执行这个任务来进行我自己的编程教育。我在换行符上尝试了preg_replace(),但换行符不显示。通过使用jquery追加keydown的麻烦是不切实际的吗? – thegumba 2011-05-18 17:28:39

+0

我在答案中提供的代码应按照您的要求进行。 – 2013-04-11 18:50:59

尝试使用nl2br(htmlspecialchars(stripslashes($paragraphs))),它将输出文本究竟如何用户输入它。