2013-05-06 79 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的之前打開對話框,並啓動超時

相關問題