2017-11-28 9 views
1

フォームのテキスト領域から2つのコードミラーインスタンスを作成しています。これらの隠しテキスト領域をサブミットする前に更新する必要があります。私はスクリプトに変更イベントを追加しましたが、動作していないようです。変更に失敗したCodeMirror

誰でもお手伝いできますか? おかげ

<script type="text/javascript"> 
    function editor(id) { 
      var editor = CodeMirror.fromTextArea(id, { 
       continuousScanning: 500, 
       lineNumbers: true 
      }); 
      editor.setSize(900, 600); 
     } 
    var config_id = document.getElementById('id_config') 
    var config = editor(config_id); 
    var remote_config_id = document.getElementById('id_remote_config') 
    var remote_config = editor(remote_config_id); 

    config.on('change',function(cMirror){ 
     // get value right from instance 
     config_id.value = cMirror.getValue(); 
    }); 
    remote_config.on('change',function(cMirror){ 
     // get value right from instance 
     remote_config_id.value = cMirror.getValue(); 
    }); 
</script> 

答えて

0

は、あなたはそのためchangeイベントを使用することはできません。CodeMirrorは隠しテキスト領域の変化に耳を傾け、その値を変更すると、別のchangeイベントを発生します。それは無限ループを引き起こす可能性があります。

ドキュメントは正しいアプローチ含まれています。この、とりわけ、は、テキストエリアの値が更新されることを保証します

var myCodeMirror = CodeMirror.fromTextArea(myTextArea);

:ライブラリははるかに強力なショートカットを提供

をフォーム(フォームの一部である場合)がに提出されると、エディタの内容と一緒になります。

つまり、上に示していないコードにバグがあります。フォームを送信するのに奇妙な方法を使用している可能性がありますので、CodeMirrorは値を認識して更新できません。

フォームを送信するJavaScriptでCodeMirrorを削除することもできます。

+0

ええと、これを調べると、私のサーバー側のコードが動作していない可能性があります。フォームを送信すると、更新が残り、ページがリロードされますが、ページを更新すると古いコンテンツが戻ってきます – AlexW

関連する問題