如何按原样复制文本区域的值(使用 \n 和所有这些东西)?

How to copy the value of the textarea as it is (with \n and all this stuff)?

我有以下 laravel 表单,我想从代码编辑器中复制文本:

<style type="text/css" media="screen">
    #editor {
        position: absolute;
        top: 150px;
        right: 150px;
        bottom: 150px;
        left: 150px;
    }
  .ace_editor {
        border: 1px solid lightgray;
        margin: auto;
        height: 65%;
        width: 55%;
    }
    .scrollmargin {
        height: 80px;
    text-align: center;
    }
</style>

{!! Form::open(['action' => 'ProblemsController@store']) !!}
  <div id="editor"></div>
  <input type="textarea" name="codeSrc" id="codeSrc" style="display: none;">
  {{Form::submit('Submit')}}
{!! Form::close() !!}

<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.3.3/ace.js" type="text/javascript" charset="utf-8"></script>
<script>
    var editor = ace.edit("editor");
    editor.setTheme("ace/theme/chrome");
    editor.session.setMode("ace/mode/c_cpp");
    //here I am taking the text from the hidden textarea
    editor.session.on('change', function(delta) {
      var content=document.getElementById('hiddenInput');
      content.value=editor.getValue();
    });
</script>

我想按原样接受文本输入,就像这样:

// Your First C++ Program

#include <iostream>

int main() {
    std::cout << "Hello World!";
    return 0;
}

不是像那样在一行中,只是忽略了 \n // Your First C++ Program#include int main() {std::cout << "Hello World!";return 0;} 甚至 <iostream> 也消失了,因为它被解释为 html 标签。这样做的目的是将其传输到.cpp文件并执行它,所以我希望它保持原样,而不是修改。

我设法解决了这个问题。所以:

editor.getValue() 应替换为 editor.getSession.getValue(),它将 return 文本原样写入(换行)。 content.value 另一方面它将 return 单行文本,所以我们需要从这个改变:

editor.session.on('change', function(delta) {
   var content=document.getElementById('hiddenInput');
   content.value=editor.getValue();
});

对此:

editor.session.setNewLineMode("auto");
editor.getSession().on("change", function () {
   document.getElementById('codeSrc').value = 
   editor.getSession().getValue().replace(/\r\n|\n|\r/g, '<br/>');
   console.log(editor.getSession().getValue());
});

就这些了。