[英]KeyDown event for CKeditor
在我的应用程序中,我有一个 CKEditor 的实例。 当用户在编辑器中输入文本时,后者应该是大写的。 为此,我编写了一个 jQuery keydown 事件处理程序,如下所示:
$(document).ready(function () {
CKEDITOR.instances.CKEditor1.on('contentDom', function () {
CKEDITOR.instances.CKEditor1.document.on('keydown', function (event) {
if (this.selectionStart == 0 && event.keyCode >= 65 && event.keyCode <= 90 && !(event.shiftKey) && !(event.ctrlKey) && !(event.metaKey) && !(event.altKey)) {
var $t = $(this);
event.preventDefault();
var char = String.fromCharCode(event.keyCode);
$t.val(char + $t.val().slice(this.selectionEnd));
this.setSelectionRange(1, 1);
}
});
});
});
它给出了一个运行时错误,即
0x800a138f - JavaScript 运行时错误:无法获取未定义或空引用的属性“on”
如何为 ckeditor 创建 keydown 事件。(我在 .aspx 页面中编写的上述代码)
您可以使用以下代码实现此目的。
CKEDITOR.replace( 'editor1', {
on: {
instanceReady: function() {
alert( this.name ); // 'editor1'
},
key: function() {
setTimeout(function(){
console.log('key pressed');
},1);
}
}
});
如果没有 setTimeout 函数,编辑器将无法捕获最后按下的键。
CKEditor 版本 4.x
我相信您以错误的方式注册 contentDom 事件。 要实例化 CKEDITOR 并注册您要做的 contentDom 事件
CKEDITOR.replace( 'editor1', {
on: {
instanceReady: function() {
alert( this.name ); // 'editor1'
var editor = this;
editor.on( 'contentDom', function() {
var editable = editor.editable();
editable.attachListener( editable, 'click', function() {
console.log( 'The editable was clicked.' );
});
});
}
}
} );
您的代码在完成实例化之前尝试访问 CKEDITOR 实例。 更多信息可以在http://docs.ckeditor.com/#!/api/CKEDITOR.config和http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-contentDom找到
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.