2013-06-12 39 views
6

Khi sử dụng tinyMCE trong hộp thoại chế độ jqueryUI, tôi không thể sử dụng siêu liên kết hoặc các tính năng 'chèn hình ảnh'.TinyMCE được mở trong hộp thoại phương thức jqueryUI

Về cơ bản, sau khi rất nhiều tìm kiếm, tôi đã tìm thấy này:

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

Điều lạ là điều đó với tôi nó seams ít của một vấn đề TinyMCE và nhiều hơn nữa của một vấn đề jQueryUI kể từ khi vấn đề là không xuất hiện khi thuộc tính phương thức của jqueryUI được đặt thành false. Với một hình thức phong phú hơn tôi thấy rằng những gì xảy ra là bất cứ khi nào tinyMCE mất tập trung, yếu tố đầu tiên trong biểu mẫu được tập trung ngay cả khi nó không phải là một tập trung/nhấp vào.

Có một số chuyên gia JavaScript có bất kỳ ý tưởng nào về cách tôi có thể giữ chế độ hộp thoại và làm cho công việc nhỏ xíu không?

Trả lời

-1

này dường như để sửa chữa nó cho tôi, hoặc ít nhất là làm việc xung quanh nó (đặt nó ở đâu đó trong $ của bạn (document) .ready()):

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

này cố định nó cho tôi khi trọng _allowInteraction sẽ không:

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

Tôi thực sự không thể ghi nhận. Tôi đã nhận nó từ this thread on the TinyMCE forums. (Họ đã di chuyển trình gỡ lỗi của họ thành github. tinymce/issues/703 là vấn đề github tương ứng.)

+0

Tôi có thể xác nhận điều này hoạt động khi _allowInteraction không hoạt động đối với tôi. Cảm ơn rất nhiều! –

+2

không phải là $ (e.target) ... không phải $ (event.target) ... ??? hoặc là "sự kiện" được định nghĩa ở một nơi khác? – MG123

0

Dường như chưa có giải pháp propper nào cho vấn đề này. Đây là loại hack nhưng nó thực sự hiệu quả với tôi. Mỗi khi bạn mở Hộp thoại xóa vùng văn bản và thêm lại như sau,

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'); 
Các vấn đề liên quan