您好有办法在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。我该如何定义它?
答案 0 :(得分:1)
我会说CMUtils
是gskinner为自己的工作创造的东西。
有几种方法可以使用该功能,具体取决于您希望功能的范围。
如果事先添加以下内容,则当前编写的方式可以正常工作:
window.CMUtils = window.CMUtils || {};
CMUtils.enforceMaxLength = function(cm, change) { //.....
或者,要将该函数保持为私有,请将第一行替换为:
var enforceMaxLength = function(cm, change) {
不要忘记在CodeMirror编辑器上设置选项"maxLength"