2012-06-27 77 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