في بعض الأحيان يكون من المهم وضع حد للنص.
يمكنك استخدام الكود التالي لتعطيل الإدراج إذا كانت قيمة المحرر أطول من حد معين
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
هل يمكنك من فضلك تحديد الحالات التي تحتاج فيها إلى ذلك ، لمساعدتنا على فهم ما إذا كان هذا يحتاج إلى أن يكون جزءًا من مجموعة الخيارات الافتراضية أو امتدادًا.
بالطبع!! لذلك ، في تطبيقنا ، يستمر البرنامج النصي في قاعدة البيانات وهناك حد لهذا العمود. أعتقد أن هذا يجب أن يكون شائعًا جدًا لأن المحرر مستخدم جدًا في تطبيقات الويب. من ناحية أخرى ، يجب أن يحل النص أعلاه مشكلتي ... شكرًا
للتأكد من أن الطول الناتج هو الطول المحدد ، وللسماح باستخدام المعاجين الكبيرة بقص النهاية ، جرب هذا التعديل:
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 :)