2

ここで何時間も苦労してきたこと。私たちは消費者向けシステムの 1 つのバックエンドで tinyMCE を使用しており、ユーザーが TinyMCE エディターに入力したテキストを通常のテキスト フィールド (html マークなし) にミラーリングする機能が必要であるという権限がありました。中まで)。

ここでの考え方は、HTML メール コンテンツ (TinyMCE) 用に 1 つのフィールドと、単純なプレーン テキスト メール (通常のテキスト エリア) 用に 1 つのフィールドを持つことです。そのため、ユーザーが TinyMCE 内に電子メール コンテンツを入力すると、テキストが 1 文字ずつプレーン テキスト領域にコピーされます。

ただし、tinyMCE 固有の JS を使用しても、この一見基本的な機能をまったく動作させることはできません。

これが私の最新の試みです(いくつかのうち、これが私の以前の反復よりも「より正しい」とは言っていませんが、最新のものです):

    <div class="row not-on-phone">
                    <label for="wysiwyg">
                        <strong>HTML</strong>
                    </label>
                <div>
                    <br style="line-height:1px">
                    <TEXTAREA name="HTML" id="HTML" WRAP="Physical" onkeyup="copyText()" class="rtfeditor"><cfoutput>#HTML#</cfoutput></TEXTAREA>
                    <br style="line-height:1px">
                </div>
            </div>
            <div class="row not-on-phone">
                    <label for="wysiwyg">
                        <strong>Plain Text</strong>
                    </label>
                <div>
                    <br style="line-height:1px">
                    <TEXTAREA name="Text" id="Text" WRAP="Physical" rows="20"><cfoutput>#Text#</cfoutput></TEXTAREA>
                    <br style="line-height:1px">
                </div>
            </div> 

関連する JS:

    <script language="javascript">

function copyText (){
    var content = tinymce.get('HTML').getContent({format : 'raw', no_events : 1});
    document.getElementsById('Text').innerHTML = content;
}
</script>

では、TinyMCE からキーストロークごとにリアルタイムでテキストをこの通常のテキスト領域に複製するにはどうすればよいでしょうか?

4

1 に答える 1

1

これには、tinymce onKeydown または onkeyup ハンドラを使用する必要があります。これは、次のようにtinymce initで設定できます

tinyMCE.init({
   ...
   setup : function(ed) {
      ed.onKeyUp.add(function(ed, evt) {
          copyText();
      });
   }
});
于 2013-04-12T08:47:00.647 に答える