1

タイトルが奇妙に聞こえるかもしれません。そうですね。

これが私のコードの概算です(この例では役に立たない ajax 呼び出しがいくつか欠けており、他のいくつかのものを単純化しています):http://jsfiddle.net/pKNAz/3/

ドラッグ可能なアイテムのリストがあるとします (この場合、「Add a Wysiwyg」と呼ばれるドラッグ可能なアイテムのみがあります) ドロップ ゾーン (私の例では灰色の四角形) に移動でき、テキストエリアが追加されます。ドロップ後、jwysiwyg ライブラリを使用して wysiwyg に変換します (このプラグインが使用するすべての画像と css を追加することはできませんでしたが、テキストエリアの基本的な動作 (ctrl+b、ctrl+i、ctrl+u) は機能するので、動作していると仮定します)。

ドロップ時に特に効果的です。ただし、ソート時にjwysiwygを壊すようになります。2 つの jwysiwyg を作成した後、暗い灰色のハンドルをドラッグして自分で試すことができます。ソートした jwysiwyg がその jwysiwyg を失っていることがわかります。を検索することで、以前にテキストエリア内に書き込んだ正しい値を引き続き取得できます$('textarea.overflow').val()が、jwysiwyg は使用できなくなりました。

この問題を解決する方法について誰か考えがありますか? 前もって感謝します

4

2 に答える 2

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();
    }
});

そのため、ものを並べ替えた場合、それを再構築すると、そのように再び機能します。

于 2012-06-28T10:59:09.497 に答える
0

アイテムをドロップすると、wysiwyg コントロールを含む iframe が空になります。最小コード シナリオでエラーが再現されるため、jquery/jwysiwyg のバグのようです。

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

バグを報告するか、wysiwyg エンジンを切り替えてください。

于 2012-06-27T15:56:52.463 に答える