Codemirror中的MaxLength

时间:2015-09-30 10:33:10

标签: javascript character codemirror maxlength

您好有办法在codemirror v5.5.0中设置最大字符长度。我试图做以下事情:

代码:

CMUtils.enforceMaxLength = function(cm, change) {
    var maxLength = cm.getOption("maxLength");
    if (maxLength && change.update) {
        var str = change.text.join("\n");
        var delta = str.length-(cm.indexFromPos(change.to) - cm.indexFromPos(change.from));
        if (delta <= 0) { return true; }
        delta = cm.getValue().length+delta-maxLength;
        if (delta > 0) {
            str = str.substr(0, str.length-delta);
            change.update(change.from, change.to, str.split("\n"));
        }
    }
    return true;
}

html_editor.on("beforeChange", CMUtils.enforceMaxLength);
css_editor.on("beforeChange", CMUtils.enforceMaxLength);
js_editor.on("beforeChange", CMUtils.enforceMaxLength);

但它不起作用

P.S我在我的代码中写了maxLength

var html_editor = CodeMirror.fromTextArea(document.getElementById("html"), {
    lineNumbers: true,
    indentWithTabs: false,
    indentUnit: 2,
    autoCloseTags: true,
    theme: 'dracula',
    maxLenght: 25,
    mode: {
        htmlMode: true,
        name: "xml"
    }
});

更新1 我的控制台说没有定义CMUtils。我该如何定义它?

1 个答案:

答案 0 :(得分:1)

我会说CMUtilsgskinner为自己的工作创造的东西。 有几种方法可以使用该功能,具体取决于您希望功能的范围。

如果事先添加以下内容,则当前编写的方式可以正常工作:

window.CMUtils = window.CMUtils || {};

CMUtils.enforceMaxLength = function(cm, change) { //.....

或者,要将该函数保持为私有,请将第一行替换为:

var enforceMaxLength = function(cm, change) {

不要忘记在CodeMirror编辑器上设置选项"maxLength"