2011-03-06 105 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