2014-02-28 139 views
1

我有一個嚴重的問題.sortable和所有的iframe文本編輯器。jQuery UI .sortable和iFrames

我有下面的代碼示例:

HTML:

<div id="content" style="height: 400px;"> 
    <div><textarea></textarea></div> 
    <div><textarea></textarea></div> 
</div> 

腳本:

$("#content").sortable(); 

這使得兩個文字區域拖動。沒有問題,到這裏......現在,讓我們添加WYSIWYG編輯器...(我試過很多人的CKEditor,tinyedit,TinyMCE的,elrte,等等)

舉個例子讓TinyMCE中做到這一點:

function ini(){ 
    tinymce.init({ 
     menubar : false, 
     toolbar1: "bold | link", 
     selector: "textarea", 
    }); 

好吧,這是問題在上升的地方。如果我知道拖放一個textarea只是一點點,編輯器字段將會禁用它自己。

我到現在爲止嘗試了什麼: - 我將可啓動和停止事件添加到可排序方法,但沒有成功。 - 我試過frameFix:true也沒有任何行爲上的差異。

任何人有一些提示或解決方案?

THX Cervisias

回答

1

我想出了一個解決方案。它是一個總的解決方法,但它的工作原理:)

所以基本上我所做的是將每個texteditorfield的內容保存到數組中,並在使用可排序方法後將其返回給編輯器。

所以它看起來像:

$("#content").sortable({ 
    start: function(){ 
     newEditors = new Array(); 
     for(i=0; i < $("textarea").length; i++){ 
      var content = tinyMCE.get(tinyMCE.editors[i].id).getContent(); 
      var id = tinyMCE.editors[i].id; 
      newEditors[i] = {"id":id, "content":content}; 
     } 
        tinyMCE.remove(); //as a fix for FF 
    }, 
    stop: function(){ 
     ini(); //re-initiate the tinymce again (if you don't do that, the field wont be editable) 
     for(var nr in newEditors){ 
      tinyMCE.get(newEditors[nr].id).setContent(newEditors[nr].content); 
     } 

    } 
}); 

所以,如果某人有同樣的問題,並計算出了另一種方式來解決這個問題,會很高興地看到這些解決方案了。

Thx Cervisias