我使用joomla内置函数在jQuery对话框的页面上创建一个tinyMCE编辑器。但是,会出现对话框,tinyMCE编辑器就像它处于只读模式。
这是php内置函数,它回应了编辑器:
<div id="PhoneCallCard" title="Phone Call Card" style="display:none;">
<?php
$editor = JFactory::getEditor();
echo $editor->display('commentz', $this->content, '600', '100', '60', '20', false);
?>
</div>
这是我打开该对话框的jQuery实现:
jQuery("#PhoneCallCard").dialog({
height:500,
width:800,
modal: true,
close: function(ev, ui){
jQuery('#tablepanelfightclubrequests .trSelected').removeClass('trSelected');
},
open:function({ //Everything I tried to activate the tinyMCE
//tinyMCE.activeEditor.getBody().setAttribute('contenteditable', false);
//tinyMCE.execCommand('mceRemoveControl',false,'commentz');
//tinyMCE.execCommand('mceAddControl',false,'commentz');
//tinyMCE.execCommand('mceFocus', false, 'commentz');
}});
我在此处Why can't I type in TinyMCE in my jQueryUI modal dialog?和TinyMCE and JQuery dialog: TinyMCE read only when modal:true in the Dialog也发现了类似问题,但两者都无法解决我的问题
答案 0 :(得分:2)
我遇到同样的问题并在页面加载时通过加载对话框修复。 例如:
jQuery(function() {
jQuery( "#dialog_desc" ).dialog({
modal: true,
width: 600,
height:500,
autoOpen: false,
});
}
当你想打开对话框时:
jQuery( "#dialog_desc" ).dialog( "open" );
希望这有帮助!
答案 1 :(得分:1)
加载对话框后应加载编辑器。你能做的是:
这是一个示例代码
在触发对话框打开后使用此代码
if ((tinyMCE != undefined) && (tinyMCE.activeEditor != undefined)){
tinyMCE.activeEditor.remove();
setTimeout(function(){
tinyMCE.execCommand('mceAddControl', false, 'commentz');
},500);
}
答案 2 :(得分:1)
当活动TinyMCE时需要settimeout,因为,当对话框初始化时需要时间等待。
例如:
$("#PositionShowDialog").dialog({
modal: true,
open: setTimeout('Change_TextareaToTinyMCE_OnPopup("#elementId");', 1000),
width: width,
......
如果加载了tinymce但你无法输入(如禁用)。您需要设置更多时间来设置时间。
对不起,我的英文皮肤不好
答案 3 :(得分:1)
我也得到了同样的错误...... 我的第一个代码
$( "#f_edit_gallery" ).dialog({
autoOpen: false,
resizable: true,
show: "clip",
height:450,
width:850,
modal: true
});
删除选项
后show: "clip",
是这样的
$( "#f_edit_gallery" ).dialog({
autoOpen: false,
resizable: true,
height:450,
width:850,
modal: true
});
tinyMCE在那之后运行良好
答案 4 :(得分:0)
Nagarjun回答的一个小修正使得剧本适合我:
if ((tinyMCE != undefined) && (tinyMCE.activeEditor != undefined)){
tinyMCE.activeEditor.remove();
$("#dialogId").dialog('open');
setTimeout(function(){
tinyMCE.execCommand('mceAddControl', false, 'commentz');
},500);
}
ie:我需要在打开对话框之前删除tinyMCE 并启动超时