2013-05-06 5 views
1

Я использую встроенную функцию joomla для создания редактора tinyMCE на странице в диалоговом окне jQuery. Однако появляется диалоговое окно, а редактор tinyMCE - как в режиме только для чтения.Невозможно ввести редактор TinyMCE в диалоговом окне jQueryUI в joomla

Это 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. Загрузите редактор, как вы делаете сейчас, используя $ editor-> Метод отображения
  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 загружен, но вы не можете ввести в него (например, инвалидов). Вам нужно установить больше времени на setTimeout.

К сожалению, мой английская кожа не хорошо

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 перед тем открыть окно и запустить тайм-аут

Смежные вопросы