2013-05-06 60 views
1

我使用的是内置的joomla函数在jQuery对话框中的页面上创建tinyMCE编辑器。但是,出现对话框并且tinyMCE编辑器就像它处于只读模式。无法在joomla中的jQueryUI对话框中输入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,但都不能解决我的问题

回答

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的从答案后

1

你应该加载对话框后加载编辑器。你可以做的是:

  1. 负载,你现在正在做使用编辑器编辑 - $>显示方法
  2. 打开jQuery UI的对话之前,再次分离编辑
  3. 显示UI对话和负载编辑器稍有时间延迟,以便编辑器在对话后加载。

这里是一个示例代码

使用该代码的对话框打开时触发

if ((tinyMCE != undefined) && (tinyMCE.activeEditor != undefined)){ 
    tinyMCE.activeEditor.remove(); 
    setTimeout(function(){ 
    tinyMCE.execCommand('mceAddControl', false, 'commentz'); 
    },500); 
} 
1

您需要的setTimeout活动时TinyMCE的,因为,它需要时间等待时,对话框初始化后。

例如:

$("#PositionShowDialog").dialog({ 
modal: true, 
open: setTimeout('Change_TextareaToTinyMCE_OnPopup("#elementId");', 1000), 
width: width, 
...... 

如果TinyMCE的加载,但你不能在其中键入(如禁用)。你需要设置更多时间来设置TimeTime。

对不起,我的英语皮肤不好

2

我有同样的问题,并通过加载对话框时,页面加载修复。 例如:

jQuery(function() { 
jQuery("#dialog_desc").dialog({ 
    modal: true, 
    width: 600, 
    height:500, 
    autoOpen: false, 
}); 
} 
当你想打开的对话框

jQuery("#dialog_desc").dialog("open"); 

希望这有助于!

0

办好小幅盘整的Nagarjun使该脚本适用于我:

if ((tinyMCE != undefined) && (tinyMCE.activeEditor != undefined)){ 
    tinyMCE.activeEditor.remove(); 
    $("#dialogId").dialog('open'); 
    setTimeout(function(){ 
    tinyMCE.execCommand('mceAddControl', false, 'commentz'); 
    },500); 
} 

即:我需要删除TinyMCE的之前打开对话框,并启动超时