我在textarea上使用tinymce插件,接受用户输入并将其插入数据库。
html页面:
<textarea name="content" id="content"></textarea>
初始化tinymce的脚本:
initTinyMCE('#content');
function initTinyMCE(querySelector) {
tinymce.init({
selector:querySelector,
plugins: [
"advlist autolink lists link image charmap print preview anchor",
"searchreplace visualblocks code fullscreen",
"insertdatetime media table contextmenu paste jbimages preview emoticons media",
"textcolor placeholder"
],
toolbar: "bold italic underline strikethrough backcolor emoticons autoresize | bullist numlist outdent indent | insertfile | alignleft aligncenter alignright alignjustify | link media image jbimages undo redo preview",
menubar:false,
paste_data_images: true,
relative_urls: false,
height : "420",
paste_word_valid_elements: "b,strong,i,em,h1,h2,u,p,ol,ul,li,a[href],span,color,mark",
relative_urls : false,
media_dimensions: false,
media_poster: false,
content_css: "/assets/css/bootstrap.min.css",
setup: function (editor) {
editor.on('change', function () {
tinymce.triggerSave();
});
}
});
}
控制器:
$data['content'] = trim($this->input->post('content', TRUE));
$this->db->insert('mytable', $data);
问题是有一个额外的<p> </p>
被插入到数据库中。因为我在插入数据库之前已经修剪了变量,我相信tinymce会自动在输入中添加一个空行。我怎么摆脱多余的空行?我真的必须使用正则表达式手动删除它吗?
我认为一个广泛使用的插件和一个旧的插件应该有一个设置或配置来做到这一点,不是吗?
答案 0 :(得分:0)
我将假设您(通常)希望您的HTML包含<p>
标签之类的内容,您最后不希望这个“额外”的空段落?
如果是这样,我怀疑你所看到的是有人按下Enter键移动到新行,但在提交表单之前没有在最后一行输入任何内容。
按Enter键移动到新行时,编辑器将创建一个新的“块元素”(通常为<p>
)并且光标位于此元素内 - 然后当您键入内容时,该内容将在该块内元件。
修剪内容无济于事,因为问题不是空格而是“空”段落。
如果您特意想要修剪内容末尾的任何空段落,您可以在提交内容时和保存内容之前执行此操作,但是您无法阻止某人按Enter键然后再提交内容输入最后一个块元素。