1

我正在为 JSON 整理一个快速的 CodeMirror 输入,并确保用户不会搞砸,我正在使用 json-lint 插件。我的问题是,在呈现空 CodeMirror 输入时立即显示 lint 错误。我知道空输入不构成有效的 JSON,但我宁愿它只在输入完成后运行。

我正在使用addon/lint/json-lint.js附加组件,而附加组件又在使用jsonlint包。

JS

var jsonConfig = {
    mode:              'application/json',
    lineNumbers:       true,
    lint:              true,
    autoCloseBrackets: true,
    gutters:           ['CodeMirror-lint-markers']
};

$('.json textarea').each(function (pos, el) {
    CodeMirror.fromTextArea(el, jsonConfig);
});

空输入结果示例: 在此处输入图像描述

皮棉消息: 在此处输入图像描述

我在文档中看不到任何内容来禁用空输入的 linting。我错过了一些简单的东西吗?

4

2 回答 2

3

希望这可以帮助:

    var editor_json = CodeMirror.fromTextArea(document.getElementById("textAreaId"), {
       lineNumbers: true,
       mode: "application/json",
       gutters: ["CodeMirror-lint-markers"],
       lint: true,
       theme: '<yourThemeName>'
    });

    //on load check if the textarea is empty and disable validation
    editor_json.setOption("lint", editor_json.getValue().trim() );

    //once changes happen, if the textarea gets filled up again re-enable the validation
    editor_json.on("change", function(cm, change) {
        editor_json.setOption("lint", editor_json.getValue().trim() );
    });

    ///sometimes you need to refresh the CodeMirror instance to fix alignment problems or some other glitch
    setTimeout(function(){
       editor_json.refresh();
    },0);

简而言之:

editor_json.setOption("lint", editor_json.getValue().trim() );

翻译成:

< yourCodeMirrorInstance >.setOption('< yourOption >',< true/false or any required value >)

希望这对某人有所帮助。

于 2016-11-17T15:11:31.593 回答
0

您可以像这样为 textarea 设置默认值

{\n\t\n}

你会有这样的东西

{

}
于 2016-05-04T15:12:06.937 回答