2014-02-28 94 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