我正在使用TinyMCE在我的webapp中创建一个WYSIWYG编辑器。我需要在高级模式下为某些textarea配置它,在某些模式下以简单模式配置它。我正在配置像这样的TinyMCE。
<head>
<script type="text/javascript">
tinyMCE.init({
mode : "textareas",
theme : "simple",
editor_selector : "simple"
});
tinyMCE.init({
mode : "textareas",
theme : "advanced"
});
</script>
</head>
这个配置可以在简单或高级模式下显示TinyMCE,基于textarea的类。
但是,当我提交表单时会出现问题。服务器获取textarea的空白。 (当我只为TinyMCE使用一个配置时不会出现此问题)
我做了一些搜索并遇到了一个建议,说明我应该明确要求TinyMCE在提交之前保存内容。我尝试将此代码添加到我的表单中。
$('#postFeedback').click( function(){
tinyMCE.triggerSave(true,true);
alert("TextArea val - " + $('input[name=email]').val() + "- " + $('textarea.simple').val());
$('form').submit();
});
表单确实已提交,但我遇到了同样的问题。 textarea中的值为空白。我还发出警告(如上所示)来检查textarea的值,它确实是空白的。
首先要提出一些问题:
答案 0 :(得分:1)
您应该在自己的内容中使用mode: "exact",
初始化您的编辑器。然后,您可以使用
tinyMCE.execCommand('mceAddControl', false, editorid); //editorid should be the id of the textarea
并且你的inits的配置将被应用(我不知何故感觉有一些非常糟糕的东西使用两个inits为所有tinymce编辑器(因为它看起来他们都被调用所有这些)。
编辑:为了能够使用不同的inits,您应该使用initialization_object而不是编辑器ID来调用mceAddControl。例如:
var config_tinymce_xy = {
mode: 'exact',
theme: "advanced",
content_css : "my.css",
plugins: "code,...",
theme_advanced_buttons1 : "code,...",
theme_advanced_buttons2 : "...",
...
};
var config_tinymce_xy2 = {
mode: 'exact',
theme: "simple",
content_css : "my.css",
...
};
init_obj = {element_id:'my_editor_id', window: window};
$.extend(true, init_obj, config_tinymce_xy);
tinyMCE.execCommand('mceAddFrameControl',false, init_obj);