Codemirror编辑器未加载textarea的内容

时间:2016-12-19 22:41:19

标签: javascript jquery codemirror

我正在尝试将 CodeMirror 应用于我正在使用的这个迷你网页应用。它有两个有2 textareas。我想添加CM以获得更好的可见性,因此我可以编辑一些内容。到目前为止,我设法应用了Eclipse主题,但该工具不再适用。似乎 CodeMirror 没有将内容复制到textarea。

当我删除Codemirror js工具再次运行时。

这是我的 JSFiddle

HTML

<textarea id="input" rows="10" cols="80"></textarea>
<textarea id="output" rows="10" cols="80" readonly></textarea>

JS

$('textarea').each(function(index, elem) {
  CodeMirror.fromTextArea(elem, {
    lineWrapping: true,
    mode: "javascript",
    theme: "eclipse",
    lineNumbers: true,

  });

});

1 个答案:

答案 0 :(得分:1)

在我看来,问题出现在http://dean.edwards.name/packer/bindings.js中,完全符合以下代码:

"#pack-script": {
    disabled: false,

    onclick: function() {
        try {
            output.value = "";
            if (input.value) {
                var value = packer.pack(input.value, base62.checked, shrink.checked);
                output.value = value;
                message.update();
            }
        } catch (error) {
            message.error("error packing script", error);
        } finally {
            saveScript.disabled = !output.value;
            decodeScript.disabled = !output.value || !base62.checked;
        }
    }
},

CodeMirror使用内部格式,并将自定义样式应用于textareas。因此,textarea的直接方法,例如input.value不起作用。您需要调整它,以便它使用CodeMirror的方法来获取/设置值,如内容操作方法部分中this guide中所述。

修改1:

除了纠正一些语法错误之外,我还在this fiddle中工作。

完成的更改:

  1. editor函数返回CodeMirror对象,以便将其分配给变量。
  2. 更改了onclick方法。在finally块中,有saveScriptdecodeScript的未定义引用,我评论过。并使用CodeMirror的getValue()setValue()方法分别获取/设置值。
  3. 如果观察到控制台中仍然存在一些错误,但这并不妨碍打包器的功能。