2013-06-12 17 views
6

Podczas korzystania z tinyMCE w modalnym oknie dialogowym jqueryUI, nie mogę używać hiperłącza ani funkcji "wstaw obraz".TinyMCE otwarte w modalnym oknie dialogowym jqueryUI

Zasadniczo, po wielu poszukiwaniach, znalazłem to:

http://www.tinymce.com/develop/bugtracker_view.php?id=5917

Najdziwniejsze jest to, że mi szwy mniej emisji TinyMCE i bardziej jQueryUI problemu ponieważ problem jest nie występuje, gdy właściwość modalna jqueryUI jest ustawiona na false.

Dzięki bogatszemu formularzowi zobaczyłem, że gdy tylko maleMCE straci ostrość, pierwszy element w formularzu zostaje skupiony, nawet jeśli nie jest on skupiony/kliknięty.

Czy jakiś guru JavaScript ma jakiś pomysł, w jaki sposób mogę zachować modalność okna i sprawić, aby tinyMCE działało?

Odpowiedz

-1

Wydaje się to naprawić to dla mnie, albo przynajmniej go obejść (umieścić go gdzieś w $ (document) .ready()):

$.widget('ui.dialog', $.ui.dialog, { 
    _allowInteraction: function(event) { 
     return ($('.mce-panel:visible').length > 0); 
    } 
}); 
5

to ustalone to dla mnie kiedy będzie nadrzędne _allowInteraction nie:

$(document).on('focusin', function(e) { 
    if ($(event.target).closest(".mce-window").length) { 
     e.stopImmediatePropagation(); 
    } 
}); 

Naprawdę nie mogę wziąć za to uznania. Mam go od this thread on the TinyMCE forums. (Oni przenieśli swoje bugtracker do github. tinymce/issues/703 jest odpowiednia kwestia github).

+0

mogę potwierdzić to działa, gdzie _allowInteraction nie działa dla mnie. Wielkie dzięki! –

+2

nie powinno to być $ (e.target) ... nie $ (event.target) ... ??? lub "zdarzenie" zdefiniowane gdzieś indziej? – MG123

0

Wydaje się, że nie są rozwiązaniem Właściwa dla tego problemu jeszcze. To jest trochę hack, ale to naprawdę działa dla mnie. każdym otwarciu Dialog usunąć pole tekstowe i ponownie dodać go jak następujące,

var myDialog = $('#myDialog'); 
var myTextarea = myDialog.find('textarea'); 
var clonedTextArea = myTextarea.clone(); // create a copy before deleting from the DOM 
var myTextAreaParent = myTextarea.parent(); // get the parent to add the created copy later 

myTextarea.remove(); // remove the textarea 

myDialog.find('.mce-container').remove(); // remove existing mce control if exists 

myTextAreaParent.append(clonedTextArea); // re-add the copy 

myDialog.dialog({ 
    open: function(e1,e2){ 
     setTimeout(function() { 
      // Add your tinymce creation code here 
     },50); 
    } 
}); 

myDialog.dialog('open');