2011-03-06 51 views
4

即时尝试使用TinyMCE作为网页表单的一部分。整合工作正常,但一旦您提交表格,当然数据将被验证。Tinymce问题 - 额外段落

如果验证评估为false,例如某些其他输入尚未填写,那么我当然不希望用户重新输入所有数据。所以我将Tinymce内容传回重新加载的视图。发生

以下问题:在TinyMCE的textarea的

内容:测试

含量TinyMCE的重装后:<p>test</p>

所以额外的段落每次添加的包装。

我希望Tinymce能够将输入视为插入到html视图中,以便纯文本视图保持不变,并且不会插入额外的段落。

我该如何做到这一点?


感谢您的回复。这只是一个示例输入,我肯定需要一个RTE,因为我正在构建一些定制的CMS功能。我现在使用html_entity_decode()来工作,html来自数据库,是的,我确实过滤了用户输入(基本上是CI,但我自己测试了XSS,只是为了确保...)。我不知道如果我这样做是最优雅的方式......但以下似乎为我工作的罚款:

JS部分:

<script type="text/javascript" src="<?php echo base_url();?>tinymce/jscripts/tiny_mce/tiny_mce.js"></script> 


<script type="text/javascript"> 

$(document).ready(function(){ 

    tinyMCE.init({ 
     theme : "advanced", 
     mode : "textareas", 
     theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect", 
     theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor", 
     theme_advanced_toolbar_location : "top", 
     theme_advanced_toolbar_align : "left", 
     entity_encoding : "raw", 
     content_css : "<?php echo base_url();?>xcss/standard_tinymce.css", 
    }); 

}); 

</script> 

生成表单文本域(配置项的方式) :

echo form_textarea('content', html_entity_decode($content)); 

那就是它。

等的输入:

<p><strong>test</strong></p><p>bla bla bla</p> 

现在会显示在TinyMCE的下面的方式,如果它被保存在$内容:

测试

唧唧歪歪


如果您提交表单,那么后数据将再次等于$内容。这正是您应该考虑检查针对注射或XSS攻击的发布数据的问题,所以请不要以同样的方式进行,除非您跟踪接下来发生的情况......我的解决方案可能不是非常安全所有情况下,我认为这很好,但是如果有人知道更好,我肯定愿意更多地了解这一点;)

回答

1

这是不可能的,因为tinymce(和所有其他rtes我知道)需要将文本包装到像p-tags或div这样的块元素中。这是必要的,以便能够设置文本的样式(一个rte的主要功能之一)。 如果你不需要html代码,你可能会考虑不使用tinymce编辑器来处理这种简单的表单输入。

2

它很simple.Add这TinyMCE的初始化选项

force_p_newlines : false