我有一个功能,可以在按下某个键时打开占位符对话框。但是当我选择一个占位符并单击“确定”时,占位符值不会插入编辑器中。但是当我通过工具栏按钮打开占位符对话框时,占位符确实会插入到编辑器中。
有人能告诉我我做错了吗?
我添加了plugin.js
:
editor.on('key', function(e) {
if (e.data.domEvent.$.key == "[") {
editor.openDialog('placeholder');
};
});
我改变了placeholder.js
中的一些内容:
可用的占位符位于下拉列表中
占位符数据已由init传递。
如您所见,我在console.log(this.getValue());
内放置了commit: function( widget ){
。
当我通过工具栏中的占位符按钮打开对话框时,console.log
在firebug控制台中可见,但是当我通过按键打开对话框时,它不可见。
'use strict';
CKEDITOR.dialog.add( 'placeholder', function( editor ) {
var lang = editor.lang.placeholder,
generalLabel = editor.lang.common.generalTab,
validNameRegex = /^[^\[\]<>]+$/;
return {
title: lang.title,
minWidth: 300,
minHeight: 80,
contents: [
{
id: 'info',
label: generalLabel,
title: generalLabel,
elements: [
// Dialog window UI elements.
{
id: 'name',
type: 'select',
items: editor.config.placeholders,
style: 'width: 100%;',
label: lang.name,
'default': '',
required: true,
validate: CKEDITOR.dialog.validate.regex( validNameRegex, lang.invalidName ),
setup: function( widget ) {
this.setValue( widget.data.name );
},
commit: function( widget ) {
console.log(this.getValue());
widget.setData( 'name', this.getValue() );
}
}
]
}
]
};
} );
答案 0 :(得分:0)
而不是在我的占位符/ plugin.js中使用以下代码:
editor.on('key', function(e) {
console.log(e.data.domEvent.$);
if (e.data.domEvent.$.key == "[") {
editor.openDialog('placeholder');
};
});
&#13;
我在启动编辑器时使用了setKeystroke函数:
var editor = CKEDITOR.replace( 'editor',{
placeholders: ["test1", "test2"],
extraPlugins: 'placeholder'
});
editor.setKeystroke( 219, 'placeholder');
&#13;
这很有效!