CKEditor:如何在达到最大限制时将焦点设置在内容的末尾
CKEditor: How to set focus to at the end of content when max-limit reached
我在 Angular 7 应用程序中使用 CKEditor 版本 16。我已将最大字符长度设置为 4096。一旦用户尝试键入第 4097 个字符,控件就会开始并显示从开始到键入的任何内容,或者在键入时产生延迟。以后显示在开头的额外字符将被自动删除。
我已经尝试设置 editorConfig 属性,但没有成功。
我已经交叉检查任何超时代码是这个问题的原因,但事实并非如此。
CKEDITOR.editorConfig = function( config ) {
config.startupFocus= true;
config.extraPlugins = 'wordcount';
config.wordcount = {
showWordCount: false,
showCharCount: true,
maxCharCount: 4096,
showParagraphs: false,
countSpacesAsChars: true
};
config.pasteFromWordRemoveFontStyles = false;
config.pasteFromWordRemoveStyles = false;
config.extraAllowedContent= 'a[href]';
config.removePlugins = 'resize';
config.enterMode = CKEDITOR.ENTER_BR;
config.autoParagraph = false;
};
您可以通过访问ck编辑器实例进行尝试。
CKEDITOR.instance.editor1.on("key", function (evt){
let instance = CKEDITOR.instance.editor1
const data = instance.document.getBody().getText();
const currentCount = data.replace(/<[^>]*>|\s/g, "").length;
const maxCount = instance.config.wordcount.maxCharCount;
const isFunKey = (evt.data.keyCode === 8 || evt.data.keyCode === 46 ||
evt.data.keyCode === 35 || evt.data.keyCode === NumberConstants.36 ||
evt.data.keyCode === 37 || evt.data.keyCode === 38 ||
evt.data.keyCode === 39 || evt.data.keyCode === 40 ||
evt.data.keyCode === 1114129 );
if (currentCount >= maxCount) {
if (!isFunKey) {
evt.cancel();
}
}
})
如果你有更多的编辑器,你可以遍历实例并相应地更新代码。
我在 Angular 7 应用程序中使用 CKEditor 版本 16。我已将最大字符长度设置为 4096。一旦用户尝试键入第 4097 个字符,控件就会开始并显示从开始到键入的任何内容,或者在键入时产生延迟。以后显示在开头的额外字符将被自动删除。
我已经尝试设置 editorConfig 属性,但没有成功。 我已经交叉检查任何超时代码是这个问题的原因,但事实并非如此。
CKEDITOR.editorConfig = function( config ) {
config.startupFocus= true;
config.extraPlugins = 'wordcount';
config.wordcount = {
showWordCount: false,
showCharCount: true,
maxCharCount: 4096,
showParagraphs: false,
countSpacesAsChars: true
};
config.pasteFromWordRemoveFontStyles = false;
config.pasteFromWordRemoveStyles = false;
config.extraAllowedContent= 'a[href]';
config.removePlugins = 'resize';
config.enterMode = CKEDITOR.ENTER_BR;
config.autoParagraph = false;
};
您可以通过访问ck编辑器实例进行尝试。
CKEDITOR.instance.editor1.on("key", function (evt){
let instance = CKEDITOR.instance.editor1
const data = instance.document.getBody().getText();
const currentCount = data.replace(/<[^>]*>|\s/g, "").length;
const maxCount = instance.config.wordcount.maxCharCount;
const isFunKey = (evt.data.keyCode === 8 || evt.data.keyCode === 46 ||
evt.data.keyCode === 35 || evt.data.keyCode === NumberConstants.36 ||
evt.data.keyCode === 37 || evt.data.keyCode === 38 ||
evt.data.keyCode === 39 || evt.data.keyCode === 40 ||
evt.data.keyCode === 1114129 );
if (currentCount >= maxCount) {
if (!isFunKey) {
evt.cancel();
}
}
})
如果你有更多的编辑器,你可以遍历实例并相应地更新代码。