2012-06-27 80 views
1

标题听起来很奇怪。嗯,是的。在jQuery UI中排序项目排序时可编辑区域消失排序

这里是我的代码的近似值(它没有在这个例子中一些无用的Ajax调用,并简化了一些其他的东西):http://jsfiddle.net/pKNAz/3/

假设你有拖动的项目列表(在这种情况下,只有一个可拖动所谓的“添加Wysiwyg”),你可以移动到一个拖放区(在我的例子中是一个灰色的矩形),它附加一个textarea,然后,在放下之后,我使用jwysiwyg库转换成wysiwyg(我不能添加所有这些插件使用的图像和CSS,但textarea的基本行为(ctrl + b,ctrl + i,ctrl + u)工作,所以我们可以假设它正在工作)。

它在下降时效果特别好。然而,它会在分拣时破坏jwysiwyg。你可以在拥有两个jwysiwyg后拖动深灰色的手柄来尝试它。你会看到你排序的jwysiwyg失去了jwysiwyg。你仍然可以通过搜索$('textarea.overflow').val()得到你以前在textarea中编写的正确值,但是你不能再使用jwysiwyg。

有没有人有关于如何解决这个问题的想法?在此先感谢

回答

1

好的,我得到了一个解决方案(对不起,1月删除你的滴答)。 我想知道,如果问题是由iframe区域和排序事件之间的组合引起的,那么为什么不只是刷新wysiwygs呢?

我创建一个函数来包装jwysiwyg毁灭+建筑,像这样:

function refreshTextareas() 
{ 
    $('textarea.autogrow').wysiwyg('destroy'); 
    $("textarea.autogrow").wysiwyg({ 
     autoGrow: true, 
     rmUnusedControls: true, 
     controls: { 
      bold: { visible : true }, 
      italic: { visible : true }, 
      insertOrderedList: { visible : true }, 
      insertUnorderedList: { visible : true }, 
      removeFormat: { visible : true }, 
      h1: { visible: true }, 
      link : { visible: true } 
     } 
    }); 
} 

,然后我在这里把它叫做:

$("#sortable").sortable({ 
    stop : function(event, ui){ 
     refreshTextareas(); 
    } 
}); 

所以,如果你排序的东西,你重新构造它,并且它再次起作用,就像那样。

+0

没问题,很好,你找到了解决方案!你仍然可以提交错误报告,因为它显然是一个bug ... :) – Jan

0

在删除项目时,包含wysiwyg控件的iframe被清空。由于最小代码方案重现了错误,它看起来像jquery/jwysiwyg中的错误。

http://jsfiddle.net/6TcM7/2/

报告错误和/或开关所见即所得发动机。

+0

它也发生在wysihtml5,所以它看起来像jquery谁是越野车。我也会尝试使用tinymce,但我想我会面对同样的情况。感谢你的例子。 – Korcholis