スクリプトの制限を設定することが重要な場合があります。
次のコードを使用して、エディターの値が制限よりも長い場合に挿入を無効にすることができます
var doc = editor.session.doc
doc.applyAnyDelta = doc.applyAnyDelta || doc.applyDelta
doc.applyDelta = function(delta) {
if (delta.action == "insert" && this.$maxLength
&& this.getValue().length > this.$maxLength) {
return false;
}
return this.applyAnyDelta(delta);
}
doc.$maxLength = 20
これがデフォルトのオプションセットまたは拡張機能の一部である必要があるかどうかを理解するために、どのような場合にこれが必要かを教えてください。
もちろん!! したがって、このアプリケーションでは、スクリプトはデータベースに永続化され、この列には制限があります。 エディターは実際にはWebアプリケーションで非常に使用されているため、これは非常に一般的であると思います。 一方、上記のスクリプトは私の問題を解決するはずです...ありがとう
結果の長さが制限される長さになるようにし、端をトリミングして大きな貼り付けを可能にするには、次の編集を試してください。
var doc = editor.session.doc
doc.applyAnyDelta = doc.applyAnyDelta || doc.applyDelta
doc.applyDelta = function(delta) {
let joinedLines = delta.lines.join("\n")
if (delta.action == "insert" && this.$maxLength
&& this.getValue().length + joinedLines.length > this.$maxLength) {
let newPasteLength = this.$maxLength - this.getValue().length
if(newPasteLength > 0) {
delta.lines = joinedLines.substr(0, newPasteLength).split("\n")
if(delta.lines.length == 1 && delta.start.row == delta.end.row) {
delta.end = {
row: delta.start.row,
column: delta.start.column+newPasteLength
}
} else {
delta.end = {
row: delta.start.row+delta.lines.length,
column: delta.lines[delta.lines.length-1].length
}
}
} else return false;
}
return this.applyAnyDelta(delta);
}
doc.$maxLength = 20
本番用にさらに最適化することは有益かもしれませんが、これがとにかく誰かに役立つことを願っています!
また、 @ christianbsと同じユースケースに
最も参考になるコメント
結果の長さが制限される長さになるようにし、端をトリミングして大きな貼り付けを可能にするには、次の編集を試してください。
本番用にさらに最適化することは有益かもしれませんが、これがとにかく誰かに役立つことを願っています!
また、 @ christianbsと同じユースケースに