CKEditor openDialog占位符

时间:2015-10-14 14:44:00

标签: javascript ckeditor

我有一个功能,可以在按下某个键时打开占位符对话框。但是当我选择一个占位符并单击“确定”时,占位符值不会插入编辑器中。但是当我通过工具栏按钮打开占位符对话框时,占位符确实会插入到编辑器中。

有人能告诉我我做错了吗?

我添加了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() );
            }
          }
        ]
      }
    ]
  };
} );

1 个答案:

答案 0 :(得分:0)

而不是在我的占位符/ plugin.js中使用以下代码:

&#13;
&#13;
editor.on('key', function(e) {
  console.log(e.data.domEvent.$);
  if (e.data.domEvent.$.key == "[") {
    editor.openDialog('placeholder');
  };
});
&#13;
&#13;
&#13;

我在启动编辑器时使用了setKeystroke函数:

&#13;
&#13;
var editor = CKEDITOR.replace( 'editor',{
  placeholders: ["test1", "test2"],
  extraPlugins: 'placeholder'
});
editor.setKeystroke( 219, 'placeholder');
&#13;
&#13;
&#13;

这很有效!