10

Cleditorhttp://premiumsoftware.net/cleditor/docs/GettingStarted.htmlを使用しています。キーアップの値を取得し、テキストを別のdivに挿入したいと思います。cleditorには、以下のjsfiddleの例で現在使用しているchange()イベントが付属していますが、これはkeyupと同じではありません。入力中にdivを更新したいのですが、キーアップを試しましたが、機能しません。

これが私が今持っているものです

$("#input").cleditor().change(function(){
    var v = $('#input').val();
    $('#x').html(v);
})

jsfiddleを確認してくださいhttp://jsfiddle.net/qm4G6/11/

4

3 に答える 3

17

cleditor非表示にして、textareaに置き換えているようiframeです(cleditor sourceの203行目を参照)。

iframeしたがって、目的を達成するには、結果のコンテンツにアクセスする必要があります。

$("#input").cleditor();

$(".cleditorMain iframe").contents().find('body').bind('keyup', function(){
    var v = $(this).text(); // or .html() if desired
    $('#x').html(v);
});

jsFiddleを更新しました

ティムのコメントに対処するための更新

これはChromeとFirefoxで機能します(私はIEにアクセスできません):

$("#input").cleditor();

$( $(".cleditorMain iframe")[0].contentWindow.document ).bind('keyup', function(){
    var v = $(this).text(); // or .html() if desired
    $('#x').html(v);
});

jsFiddleを更新しました

更新2

ユーザーima007は、より優れたクロスブラウザーソリューションを見つけることができました。jQueryCleditor wysiwygテキストエディター:keyup()はWebkitブラウザーで機能しますが、FirefoxまたはIEでは機能しません。

于 2011-10-16T15:07:53.093 に答える
1

これは、エディターのソースコードを少し変更することで実現できました。refreshメソッド(801行目)で、iframeドキュメントのblurイベントハンドラーを変更しました。

// Update the textarea when the iframe loses focus
    ($.browser.mozilla ? $doc : $(contentWindow)).blur(function() {
      updateTextArea(editor, true);
    });

に変更

// Update the textarea when the iframe loses focus or keyup happens
        ($.browser.mozilla ? $doc : $(contentWindow)).bind('blur keyup', function (e) {
            updateTextArea(editor, true);

            if (options.keyup && e.type === 'keyup')
                options.keyup(editor.$area.val());
        });

初期化時に渡されるオプションで、次のように定義できます。

$("#element").cleditor({
keyup : function (text) {
 alert(text);
 // do something
}
});

これが誰かに役立つことを願っています。

よろしく

于 2012-03-21T06:19:04.790 に答える
0

CLEditor'.doc'プロパティを使用してみましたか?

doc-iframeで現在編集されているドキュメントオブジェクト。 cleditorドキュメント

var inputDoc = $("#input").cleditor().doc;

$(inputDoc).keyup(function(){
    var v = $('#input').val();
   $('#x').html(v);
})
于 2014-01-23T08:58:34.017 に答える